summaryrefslogtreecommitdiffstats
path: root/abs/extra
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra')
-rw-r--r--abs/extra/apache-ant/PKGBUILD89
-rw-r--r--abs/extra/apache-ant/apache-ant.csh3
-rw-r--r--abs/extra/apache-ant/apache-ant.sh4
-rw-r--r--abs/extra/asciidoc/ChangeLog10
-rw-r--r--abs/extra/asciidoc/PKGBUILD61
-rw-r--r--abs/extra/autogen/PKGBUILD25
-rw-r--r--abs/extra/bdf-unifont/PKGBUILD15
-rw-r--r--abs/extra/blas/LICENSE.blas19
-rw-r--r--abs/extra/blas/Makefile.blas149
-rwxr-xr-xabs/extra/blas/PKGBUILD52
-rw-r--r--abs/extra/blas/lapack-3.1.1-make.inc.patch23
-rw-r--r--abs/extra/bmp/0.9.7-visualization.patch12
-rw-r--r--abs/extra/bmp/0.9.7.1-visualization.patch12
-rw-r--r--abs/extra/bmp/PKGBUILD25
-rw-r--r--abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch108
-rw-r--r--abs/extra/boost/PKGBUILD20
-rw-r--r--abs/extra/boost/__changelog3
-rw-r--r--abs/extra/boost/exceptions.patch25
-rw-r--r--abs/extra/cifs-utils/PKGBUILD25
-rw-r--r--abs/extra/colord/PKGBUILD37
-rw-r--r--abs/extra/community/cpulimit/PKGBUILD16
-rw-r--r--abs/extra/community/desktop-file-utils/PKGBUILD18
-rw-r--r--abs/extra/community/enca/PKGBUILD17
-rw-r--r--abs/extra/community/gstreamer0.10-base/PKGBUILD35
-rw-r--r--abs/extra/community/gstreamer0.10/PKGBUILD22
-rw-r--r--abs/extra/crda/PKGBUILD36
-rw-r--r--abs/extra/crda/crda.conf.d4
-rw-r--r--abs/extra/crda/libnl32.patch12
-rw-r--r--abs/extra/cups-filters/PKGBUILD48
-rw-r--r--abs/extra/cups-filters/buildfix_dlopen.diff31
-rw-r--r--abs/extra/cups-filters/buildfix_poppler.diff224
-rw-r--r--abs/extra/cups/PKGBUILD138
-rw-r--r--abs/extra/cups/PKGBUILD.16146
-rwxr-xr-xabs/extra/cups/cups58
-rw-r--r--abs/extra/cups/cups-1.3.7-peercred.patch11
-rw-r--r--abs/extra/cups/cups-avahi-1-config.patch42
-rw-r--r--abs/extra/cups/cups-avahi-2-backend.patch (renamed from abs/extra/cups/cups-avahi.patch)373
-rw-r--r--abs/extra/cups/cups-avahi-3-timeouts.patch381
-rw-r--r--abs/extra/cups/cups-avahi-4-poll.patch529
-rw-r--r--abs/extra/cups/cups-avahi-5-services.patch1272
-rw-r--r--abs/extra/cups/cups-no-export-ssllibs.patch12
-rw-r--r--abs/extra/cups/cups-no-gcrypt.patch38
-rw-r--r--abs/extra/cups/cups-no-gzip-man.patch18
-rw-r--r--abs/extra/cups/cups-no-gzip-man.patch.1618
-rw-r--r--abs/extra/cups/cups-systemd-socket.patch527
-rw-r--r--abs/extra/cups/cups.install17
-rw-r--r--abs/extra/cups/cups.logrotate8
-rw-r--r--abs/extra/cups/fix-infinite-usb-loop.patch35
-rw-r--r--abs/extra/dcraw/PKGBUILD14
-rw-r--r--abs/extra/dcraw/dcraw.install13
-rw-r--r--abs/extra/ddrescue/PKGBUILD30
-rw-r--r--abs/extra/ddrescue/ddrescue.install22
-rw-r--r--abs/extra/dejagnu/PKGBUILD16
-rw-r--r--abs/extra/dnsmasq/PKGBUILD58
-rw-r--r--abs/extra/dnsmasq/dnsmasq.confd9
-rw-r--r--abs/extra/dnsmasq/dnsmasq.install21
-rw-r--r--abs/extra/dnsmasq/dnsmasq.service13
-rwxr-xr-xabs/extra/dnsmasq/rc.dnsmasq58
-rw-r--r--abs/extra/docbook-xml/LICENSE24
-rw-r--r--abs/extra/docbook-xml/PKGBUILD155
-rw-r--r--abs/extra/docbook-xml/docbook-xml.install4
-rw-r--r--abs/extra/docbook-xml/docbook.patch226
-rw-r--r--abs/extra/docbook-xsl/PKGBUILD54
-rw-r--r--abs/extra/docbook-xsl/docbook-xsl.install10
-rw-r--r--abs/extra/docbook2x/PKGBUILD6
-rwxr-xr-xabs/extra/efibootmgr/PKGBUILD52
-rwxr-xr-xabs/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch159
-rwxr-xr-xabs/extra/efibootmgr/efibootmgr_default_to_grub2.patch45
-rw-r--r--abs/extra/emacs/PKGBUILD46
-rw-r--r--abs/extra/emacs/__changelog1
-rw-r--r--abs/extra/emacs/emacs.install32
-rw-r--r--abs/extra/emacs/glibc_gets.patch90
-rw-r--r--abs/extra/enchant/PKGBUILD36
-rw-r--r--abs/extra/fftw/PKGBUILD51
-rw-r--r--abs/extra/gc/PKGBUILD35
-rw-r--r--abs/extra/gconf/PKGBUILD42
-rw-r--r--abs/extra/git/ChangeLog57
-rw-r--r--abs/extra/git/PKGBUILD107
-rw-r--r--abs/extra/git/git-daemon70
-rw-r--r--abs/extra/git/git-daemon.conf5
-rw-r--r--abs/extra/glew/PKGBUILD15
-rw-r--r--abs/extra/glibmm/PKGBUILD28
-rw-r--r--abs/extra/gnome-vfs/PKGBUILD31
-rw-r--r--abs/extra/gnome-vfs/gcrypt-config.patch31
-rw-r--r--abs/extra/gnome-vfs/hal-show-volume-names.patch46
-rw-r--r--abs/extra/gptfdisk/PKGBUILD16
-rw-r--r--abs/extra/gtk-doc/PKGBUILD8
-rw-r--r--abs/extra/gtk3/PKGBUILD42
-rw-r--r--abs/extra/gtk3/gtk3.install16
-rw-r--r--abs/extra/gtk3/settings.ini2
-rw-r--r--abs/extra/gtk3/wacom.patch12
-rw-r--r--abs/extra/guile/PKGBUILD34
-rw-r--r--abs/extra/guile/guile-snarf.patch9
-rw-r--r--abs/extra/guile/guile.install11
-rw-r--r--abs/extra/help2man/PKGBUILD8
-rw-r--r--abs/extra/help2man/help2man.install2
-rw-r--r--abs/extra/hicolor-icon-theme/PKGBUILD14
-rw-r--r--abs/extra/hwloc/PKGBUILD11
-rw-r--r--abs/extra/icu/PKGBUILD20
-rw-r--r--abs/extra/icu/icu.8198.revert.icu5431.patch129
-rw-r--r--abs/extra/id3lib/PKGBUILD40
-rw-r--r--abs/extra/iw/PKGBUILD10
-rw-r--r--abs/extra/iw/README2
-rw-r--r--abs/extra/iw/__changelog1
-rw-r--r--abs/extra/java7-openjdk/PKGBUILD352
-rw-r--r--abs/extra/java7-openjdk/__changelog1
-rw-r--r--abs/extra/java7-openjdk/disable_Werror.diff11
-rw-r--r--abs/extra/java7-openjdk/fix_corba_cmds_path.diff29
-rw-r--r--abs/extra/java7-openjdk/fontconfig-paths.diff134
-rw-r--r--abs/extra/java7-openjdk/jdk7-openjdk.profile6
-rw-r--r--abs/extra/java7-openjdk/jdk7-openjdk.profile.csh1
-rw-r--r--abs/extra/java7-openjdk/jre7-openjdk-headless.install15
-rw-r--r--abs/extra/java7-openjdk/jre7-openjdk.install18
-rw-r--r--abs/extra/java7-openjdk/jre7-openjdk.profile5
-rw-r--r--abs/extra/java7-openjdk/jre7-openjdk.profile.csh5
-rw-r--r--abs/extra/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff36
-rw-r--r--abs/extra/java7-openjdk/openjdk7_nonreparenting-wm.diff58
-rw-r--r--abs/extra/libbluray-git/PKGBUILD38
-rw-r--r--abs/extra/libbluray/PKGBUILD37
-rw-r--r--abs/extra/libbonoboui/PKGBUILD10
-rw-r--r--abs/extra/libcap-ng/PKGBUILD30
-rw-r--r--abs/extra/libcdio/PKGBUILD38
-rw-r--r--abs/extra/libcdio/libcdio-0.83-linking.patch22
-rw-r--r--abs/extra/libcdio/libcdio.install13
-rw-r--r--abs/extra/libdvdcss/PKGBUILD29
-rw-r--r--abs/extra/libebml/PKGBUILD23
-rw-r--r--abs/extra/libffado/60-ffado.rules27
-rw-r--r--abs/extra/libffado/PKGBUILD35
-rw-r--r--abs/extra/libffado/fix-segfault-on-close.patch64
-rw-r--r--abs/extra/libffado/libffado-gcc47.patch55
-rw-r--r--abs/extra/libftdi/PKGBUILD35
-rw-r--r--abs/extra/libgdiplus/PKGBUILD15
-rw-r--r--abs/extra/libgdiplus/__changelog1
-rw-r--r--abs/extra/libgdiplus/libpng15.patch164
-rw-r--r--abs/extra/libgnome-keyring/PKGBUILD20
-rw-r--r--abs/extra/libgnome/PKGBUILD57
-rw-r--r--abs/extra/libgnomecanvas/PKGBUILD10
-rw-r--r--abs/extra/libgnomeui/PKGBUILD20
-rw-r--r--abs/extra/liblqr/PKGBUILD26
-rw-r--r--abs/extra/libmatroska/PKGBUILD25
-rw-r--r--abs/extra/libmikmod/PKGBUILD37
-rw-r--r--abs/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff47
-rw-r--r--abs/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff21
-rw-r--r--abs/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff15
-rw-r--r--abs/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff112
-rw-r--r--abs/extra/libmikmod/libmikmod-CVE-2009-0179.patch33
-rw-r--r--abs/extra/libmikmod/libmikmod.install18
-rw-r--r--abs/extra/libmng/PKGBUILD27
-rw-r--r--abs/extra/libmng/__changelog1
-rw-r--r--abs/extra/libmng/automake-patch11
-rw-r--r--abs/extra/libnotify/PKGBUILD27
-rw-r--r--abs/extra/libsamplerate/ChangeLog14
-rw-r--r--abs/extra/libsamplerate/PKGBUILD30
-rw-r--r--abs/extra/libsigc++/PKGBUILD34
-rw-r--r--abs/extra/libva/PKGBUILD25
-rw-r--r--abs/extra/libva/libva.install5
-rw-r--r--abs/extra/libvpx/PKGBUILD19
-rw-r--r--abs/extra/libwmf/PKGBUILD40
-rw-r--r--abs/extra/libwmf/libwmf-0.2.8.4-libpng-1.5.patch12
-rw-r--r--abs/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch10
-rw-r--r--abs/extra/libwmf/libwmf.install13
-rw-r--r--abs/extra/libxml++/PKGBUILD22
-rw-r--r--abs/extra/libyaml/PKGBUILD26
-rw-r--r--abs/extra/llvm/PKGBUILD226
-rw-r--r--abs/extra/llvm/bug-9869-operator-h-c++0x.patch57
-rw-r--r--abs/extra/llvm/cindexer-clang-path.patch10
-rw-r--r--abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch12
-rw-r--r--abs/extra/llvm/clang-plugin-loader-registry.patch11
-rw-r--r--abs/extra/llvm/clang-pure64.patch13
-rw-r--r--abs/extra/llvm/clang-toolchains-gcc-versions.patch12
-rw-r--r--abs/extra/llvm/enable-lto.patch32
l---------abs/extra/llvm/llvm-3.1-2.src.tar.gz1
-rw-r--r--abs/extra/llvm/llvm-Config-config.h9
-rw-r--r--abs/extra/llvm/llvm-Config-llvm-config.h9
-rw-r--r--abs/extra/lynx/PKGBUILD7
-rw-r--r--abs/extra/m2vrequantiser/PKGBUILD2
-rw-r--r--abs/extra/mcpp/PKGBUILD35
-rw-r--r--abs/extra/mcpp/fs28284.patch100
-rw-r--r--abs/extra/mcpp/namlen.patch11
-rw-r--r--abs/extra/memtest86+/PKGBUILD17
-rw-r--r--abs/extra/memtest86+/memtest86+.install23
-rw-r--r--abs/extra/mkvtoolnix/PKGBUILD100
-rw-r--r--abs/extra/mkvtoolnix/mkvtoolnix.install14
-rw-r--r--abs/extra/mkvtoolnix/mm_io.patch11
-rw-r--r--abs/extra/mono/PKGBUILD19
-rw-r--r--abs/extra/mono/__changelog2
-rw-r--r--abs/extra/mpg123/PKGBUILD26
-rw-r--r--abs/extra/mpg123/__changelog1
-rw-r--r--abs/extra/nbd/PKGBUILD42
-rw-r--r--abs/extra/nbd/config33
-rw-r--r--abs/extra/nbd/nbd39
-rw-r--r--abs/extra/nbd/nbd.install13
-rw-r--r--abs/extra/nbd/nbd.service10
-rw-r--r--abs/extra/neon/PKGBUILD6
-rw-r--r--abs/extra/netpbm/PKGBUILD54
-rw-r--r--abs/extra/netpbm/__changelog1
-rw-r--r--abs/extra/netpbm/libpng-1.4.patch59
-rw-r--r--abs/extra/netpbm/netpbm-CAN-2005-2471.patch4
-rw-r--r--abs/extra/netpbm/netpbm-security-code.patch271
-rw-r--r--abs/extra/ocaml/PKGBUILD54
-rw-r--r--abs/extra/ocaml/fix-ocaml-binutils-2.21.patch66
l---------abs/extra/ocaml/ocaml-3.12.1-3.src.tar.gz1
-rw-r--r--abs/extra/opencore-amr/PKGBUILD21
-rw-r--r--abs/extra/openjpeg/30_fix_build_for_debian.dpatch70
-rw-r--r--abs/extra/openjpeg/PKGBUILD35
-rw-r--r--abs/extra/openmpi/PKGBUILD41
-rw-r--r--abs/extra/openmpi/openmpi-hostfile.patch12
-rw-r--r--abs/extra/openslp/PKGBUILD21
-rw-r--r--abs/extra/opensp/PKGBUILD36
-rw-r--r--abs/extra/orc/PKGBUILD21
-rw-r--r--abs/extra/perl-class-inspector/PKGBUILD59
-rw-r--r--abs/extra/perl-sgmls/perl-sgmls-1.03ii-4.src.tar.gzbin735 -> 0 bytes
-rw-r--r--abs/extra/polkit/CVE-2011-1485.patch908
-rw-r--r--abs/extra/polkit/PKGBUILD23
-rw-r--r--abs/extra/polkit/systemd-fallback.patch1571
-rw-r--r--abs/extra/poppler-data/PKGBUILD4
-rw-r--r--abs/extra/poppler/PKGBUILD66
-rw-r--r--abs/extra/postgresql/PKGBUILD112
-rw-r--r--abs/extra/postgresql/build.patch11
-rwxr-xr-xabs/extra/postgresql/postgresql59
-rw-r--r--abs/extra/postgresql/postgresql.confd16
-rw-r--r--abs/extra/postgresql/postgresql.install26
-rw-r--r--abs/extra/postgresql/postgresql.logrotate4
-rwxr-xr-xabs/extra/postgresql/postgresql.rcd79
-rw-r--r--abs/extra/psutils/PKGBUILD31
-rw-r--r--abs/extra/qt-assistant-compat/PKGBUILD43
-rw-r--r--abs/extra/qtwebkit/PKGBUILD38
-rw-r--r--abs/extra/qtwebkit/python2-path.patch29
-rw-r--r--abs/extra/rarian/PKGBUILD21
-rw-r--r--abs/extra/recode/PKGBUILD31
-rw-r--r--abs/extra/recode/__changelog4
-rw-r--r--abs/extra/recode/recode_automake.patch23
-rw-r--r--abs/extra/rpmextract/PKGBUILD4
-rw-r--r--abs/extra/rsync/PKGBUILD39
-rw-r--r--abs/extra/rsync/rsync.xinetd11
-rw-r--r--abs/extra/rsync/rsyncd37
-rw-r--r--abs/extra/rsync/rsyncd.conf10
-rw-r--r--abs/extra/rsync/rsyncd.service10
-rw-r--r--abs/extra/rtmpdump/PKGBUILD2
-rw-r--r--abs/extra/ruby/PKGBUILD79
-rw-r--r--abs/extra/ruby/gemrc5
-rw-r--r--abs/extra/ruby/ruby.install22
-rw-r--r--abs/extra/samba/PKGBUILD112
-rw-r--r--abs/extra/samba/__changelog5
-rw-r--r--abs/extra/samba/fix-ipv6-mount.patch11
-rw-r--r--abs/extra/samba/nmbd.service8
-rwxr-xr-xabs/extra/samba/samba12
-rw-r--r--abs/extra/samba/samba.conf1
-rw-r--r--abs/extra/samba/samba.install7
-rw-r--r--abs/extra/samba/samba.logrotate9
-rw-r--r--abs/extra/samba/smbd.service9
-rw-r--r--abs/extra/samba/winbindd.service9
-rw-r--r--abs/extra/sane/PKGBUILD72
-rw-r--r--abs/extra/sane/libv4l-0.8.3.patch64
-rw-r--r--abs/extra/sane/sane.install7
-rw-r--r--abs/extra/sane/sane.xinetd11
-rw-r--r--abs/extra/sane/saned.service8
-rw-r--r--abs/extra/sane/saned.socket9
-rw-r--r--abs/extra/sane/xerox_mfp_fix_usb_devices.patch67
-rw-r--r--abs/extra/schroedinger/PKGBUILD26
-rw-r--r--abs/extra/scons/PKGBUILD13
-rw-r--r--abs/extra/screen/PKGBUILD4
-rw-r--r--abs/extra/shared-color-profiles/PKGBUILD27
-rw-r--r--abs/extra/sip/PKGBUILD52
-rw-r--r--abs/extra/sip/__changelog1
-rw-r--r--abs/extra/speex/PKGBUILD27
-rw-r--r--abs/extra/sqlite/PKGBUILD93
-rw-r--r--abs/extra/sqlite/license.txt33
-rw-r--r--abs/extra/strace/PKGBUILD13
-rw-r--r--abs/extra/subversion/PKGBUILD137
-rw-r--r--abs/extra/subversion/__changelog1
-rw-r--r--abs/extra/subversion/subversion.suppress.deprecation.warnings.patch22
-rw-r--r--abs/extra/subversion/svnmerge.py2370
-rw-r--r--abs/extra/swig/PKGBUILD35
-rw-r--r--abs/extra/swig/pyint_fromsize_t.diff18
-rw-r--r--abs/extra/swig/upstream_r13128.diff73
-rw-r--r--abs/extra/syslinux/PKGBUILD32
-rw-r--r--abs/extra/syslinux/syslinux-dont-build-dos-windows-targets.patch4
-rw-r--r--abs/extra/syslinux/syslinux-install_update463
-rw-r--r--abs/extra/syslinux/syslinux.cfg79
-rw-r--r--abs/extra/syslinux/syslinux.install13
-rw-r--r--abs/extra/unixodbc/PKGBUILD15
-rw-r--r--abs/extra/valgrind/PKGBUILD27
-rw-r--r--abs/extra/valgrind/glibc-patch-version.patch52
-rw-r--r--abs/extra/valgrind/valgrind-3.6.1-glibc-2.14.patch67
-rw-r--r--abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch41
-rw-r--r--abs/extra/vorbis-tools/PKGBUILD14
-rw-r--r--abs/extra/vte/PKGBUILD40
-rw-r--r--abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch62
-rw-r--r--abs/extra/vte3/PKGBUILD39
-rw-r--r--abs/extra/wireless-regdb/PKGBUILD2
-rw-r--r--abs/extra/wxgtk/PKGBUILD29
-rw-r--r--abs/extra/wxgtk/__changelog1
-rw-r--r--abs/extra/xdg-utils/PKGBUILD41
-rw-r--r--abs/extra/xdg-utils/xfce-detection.diff49
-rw-r--r--abs/extra/xinetd/PKGBUILD51
-rw-r--r--abs/extra/xinetd/xinetd-2.3.14.tar.gzbin301703 -> 0 bytes
-rw-r--r--abs/extra/xinetd/xinetd.service10
-rw-r--r--abs/extra/xmlto/PKGBUILD19
-rw-r--r--abs/extra/xmms/PKGBUILD88
-rw-r--r--abs/extra/xmms/id3v2.patch3379
-rw-r--r--abs/extra/xmms/xmms-1.2.10-fonts.patch24
-rw-r--r--abs/extra/xmms/xmms-1.2.10-recode-id3.patch11
-rw-r--r--abs/extra/xmms/xmms-1.2.11-3dse.patch503
-rw-r--r--abs/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch43
-rw-r--r--abs/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch10
-rw-r--r--abs/extra/xmms/xmms.16.pngbin0 -> 1497 bytes
-rw-r--r--abs/extra/xmms/xmms.32.pngbin0 -> 3477 bytes
-rw-r--r--abs/extra/xmms/xmms.48.pngbin0 -> 5925 bytes
-rw-r--r--abs/extra/xmms/xmms.install11
310 files changed, 12949 insertions, 9649 deletions
diff --git a/abs/extra/apache-ant/PKGBUILD b/abs/extra/apache-ant/PKGBUILD
index eaafed4..d8982e8 100644
--- a/abs/extra/apache-ant/PKGBUILD
+++ b/abs/extra/apache-ant/PKGBUILD
@@ -1,53 +1,74 @@
-# $Id$
+# $Id: PKGBUILD 160040 2012-05-28 13:39:12Z guillaume $
+# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
# Contributor: Andrew Wright <andreww@photism.org>
-# Maintainer: Paul Mattal <paul@archlinux.org>
-
+# Contributor: Paul Mattal <paul@archlinux.org>
pkgname=apache-ant
-pkgver=1.8.2
-pkgrel=2
+pkgver=1.8.4
+pkgrel=1
pkgdesc="A java-based build tool"
arch=('any')
-license=('APACHE')
url="http://ant.apache.org/"
+license=('APACHE')
depends=('java-environment')
+makedepends=('java-environment' 'xalan-java' 'junit' 'apache-ant')
optdepends=('junit: to jave junit on the classpath in javac tasks')
-source=(http://archive.apache.org/dist/ant/binaries/${pkgname}-${pkgver}-bin.tar.bz2
- ${pkgname}.sh ${pkgname}.csh
- ant_diagnostics.patch)
-md5sums=('9e9ae9fc7352960191489a1286fb0928'
- '593ee6ebd9b8ec321534a028e686880f'
- '475b684eb8202c09cbb51496cd8ee1e0'
- 'cbaab423be40a6e63f0fde901b91eb50')
+#http://apache.org/dist/ant/source/${pkgname}-${pkgver}-src.tar.bz2
+source=(http://apache.org/dist/ant/binaries/${pkgname}-${pkgver}-bin.tar.bz2
+ ${pkgname}.sh
+ ${pkgname}.csh)
+md5sums=('561838e665e5dc185dde9d220fce1336'
+ 'dbfa1e8dd4bab2f5821f5abe50835c83'
+ 'b3f67824043b6fb00667bb7a4007af42')
-package() {
- # install profile.d script
- install -dm755 "${pkgdir}"/etc/profile.d
- install -m755 "${srcdir}"/${pkgname}.{csh,sh} "${pkgdir}"/etc/profile.d/
+_ant_home=/usr/share/${pkgname}
+
+#build() {
+# cd "${srcdir}/${pkgname}-${pkgver}"
+
+# ant -Ddest=optional -f fetch.xml
- # Get the ANT_HOME env var
- source "${srcdir}"/${pkgname}.sh
+# ln -s /usr/share/java/junit.jar lib/optional/junit.jar
+# ./bootstrap.sh
- cd "${srcdir}"/${pkgname}-${pkgver}
- install -dm755 "${pkgdir}"/${ANT_HOME}/{bin,lib}
+# mkdir ${srcdir}/.m2
+# ./bootstrap/bin/ant -Ddest=optional -Ddest.dir=${srcdir}/.m2 -f fetch.xml
+# ./bootstrap/bin/ant -f fetch.xml -nouserlib -Ddest=optional
- install -m644 ./lib/*.jar "${pkgdir}"/${ANT_HOME}/lib
- cp -Rp ./etc "${pkgdir}"/${ANT_HOME}
+# sh build.sh dist
- # Do not copy Windows .bat/.cmd files
+# ant dist
+#}
+
+package() {
+# cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}-${pkgver}"
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ install -dm755 ${pkgdir}/${_ant_home}/bin
+ cp -Rp etc ${pkgdir}/${_ant_home}
find ./bin -type f -a ! -name \*.bat -a ! -name \*.cmd \
- -exec install -m755 {} "${pkgdir}"/${ANT_HOME}/bin \;
+ -exec install -m755 {} ${pkgdir}/${_ant_home}/bin \;
+
+ install -dm755 ${pkgdir}/usr/bin
+ ln -s ${_ant_home}/bin/ant ${pkgdir}/usr/bin/ant
- # symlink to junit so it's on the javac build path for ant
- # matches behavior on ubuntu 9 and makes sense for compatibility
+ install -dm755 ${pkgdir}/usr/share/java/${pkgname}
+ install -m644 lib/*.jar ${pkgdir}/usr/share/java/${pkgname}
+ ln -s /usr/share/java/${pkgname} ${pkgdir}/${_ant_home}/lib
+
+ # Symlink to junit so it's on the javac build path
# http://bugs.archlinux.org/task/15229
- ln -sf /usr/share/java/junit.jar "${pkgdir}"/usr/share/java/apache-ant/lib/
+ # http://ant.apache.org/manual/install.html#optionalTasks
+ ln -sf ../junit.jar ${pkgdir}/usr/share/java/apache-ant/
# fix python2 path
- sed -i 's|/usr/bin/python|/usr/bin/python2|' "${pkgdir}"/usr/share/java/apache-ant/bin/runant.py
+ sed -i 's|/usr/bin/python|/usr/bin/python2|' ${pkgdir}${_ant_home}/bin/runant.py
+
+ # install profile.d script
+ install -dm755 ${pkgdir}/etc/profile.d
+ install -m755 "${srcdir}"/${pkgname}.{csh,sh} ${pkgdir}/etc/profile.d/
- # The license says the NOTICE file should be redistributed for derivative
- # works, so lets supply it.
- cd "${srcdir}"/${pkgname}-${pkgver}
- install -dm755 "${pkgdir}"/usr/share/licenses/${pkgname}
- install -m644 LICENSE NOTICE "${pkgdir}"/usr/share/licenses/${pkgname}
+ # License says NOTICE file should be redistributed for derivative works
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 LICENSE NOTICE ${pkgdir}/usr/share/licenses/${pkgname}
}
diff --git a/abs/extra/apache-ant/apache-ant.csh b/abs/extra/apache-ant/apache-ant.csh
index b6a6d58..a19392b 100644
--- a/abs/extra/apache-ant/apache-ant.csh
+++ b/abs/extra/apache-ant/apache-ant.csh
@@ -1,2 +1 @@
-setenv ANT_HOME /usr/share/java/apache-ant
-setenv PATH ${PATH}:${ANT_HOME}/bin
+setenv ANT_HOME /usr/share/apache-ant
diff --git a/abs/extra/apache-ant/apache-ant.sh b/abs/extra/apache-ant/apache-ant.sh
index ab602fb..eaa8a54 100644
--- a/abs/extra/apache-ant/apache-ant.sh
+++ b/abs/extra/apache-ant/apache-ant.sh
@@ -1,3 +1 @@
-export ANT_HOME=/usr/share/java/apache-ant
-export PATH=$PATH:$ANT_HOME/bin
-
+export ANT_HOME=/usr/share/apache-ant
diff --git a/abs/extra/asciidoc/ChangeLog b/abs/extra/asciidoc/ChangeLog
deleted file mode 100644
index e9e5156..0000000
--- a/abs/extra/asciidoc/ChangeLog
+++ /dev/null
@@ -1,10 +0,0 @@
-
-2009-11-07 Chris Brannon <cmbrannon79@gmail.com>
-
- * Fixed optdepends, converted to arch=('any').
-
-
-2008-07-06 Douglas Soares de Andrade <douglas@archlinux.org>
-
- * Updated for x86_64 - 8.2.7
-
diff --git a/abs/extra/asciidoc/PKGBUILD b/abs/extra/asciidoc/PKGBUILD
index e7ab081..a333a43 100644
--- a/abs/extra/asciidoc/PKGBUILD
+++ b/abs/extra/asciidoc/PKGBUILD
@@ -1,36 +1,61 @@
-# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+# $Id: PKGBUILD 73972 2012-07-17 22:26:29Z bluewind $
# Contributor: Chris Brannon <cmbrannon79@gmail.com>
# Contributor: Geoffroy Carrier <geoffroy@archlinux.org>
# Contributor: Dan McGee <dan@archlinux.org>
# Contributor: Jaroslaw Rosiek <philosoph@interia.pl>
# Contributor: Darwin Bautista <djclue917@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Maintainer: Florian Pritz <flo@xinu.at>
pkgname=asciidoc
-pkgver=8.6.3
+pkgver=8.6.8
pkgrel=1
-pkgdesc="Text document format for short documents, articles, books and UNIX man pages"
+pkgdesc='Text document format for short documents, articles, books and UNIX man pages.'
arch=('any')
-url="http://www.methods.co.nz/asciidoc/"
+url='http://www.methods.co.nz/asciidoc/'
license=('GPL')
depends=('python2' 'libxslt' 'docbook-xsl')
optdepends=('lilypond: music-filter'
- 'imagemagick: music-filter (used in conjunction with lilypond)'
- 'source-highlight: source-highlight-filter'
- 'fop: pdf generation'
- 'lynx: text generation'
- 'w3m: text generation (alternative to lynx)')
-source=(http://downloads.sourceforge.net/asciidoc/asciidoc-${pkgver}.tar.gz)
+ 'imagemagick: music-filter (used in conjunction with lilypond)'
+ 'source-highlight: source-highlight-filter'
+ 'dblatex: pdf generation'
+ 'fop: alternative pdf generation'
+ 'lynx: text generation'
+ 'w3m: text generation (alternative to lynx)')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('6ffff1ab211f30481741ce4d1e4b12bf')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
- ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ cd ${pkgname}-${pkgver}
+
+ # python2 fix
+ for file in asciidocapi.py a2x.py asciidoc.py filters/music/music2png.py filters/latex/latex2png.py \
+ filters/code/code-filter.py filters/graphviz/graphviz2png.py; do
+ sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' $file
+ done
+ sed -i -e 's_sys:python_sys:python2_g' -e 's_sys3:python_sys3:python2_g' xhtml11.conf
+ sed -i 's_sys:python_sys:python2_g' xhtml11-quirks.conf
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc
}
+
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make install DESTDIR="${pkgdir}" || return 1
- install -Dm644 asciidocapi.py ${pkgdir}/usr/lib/python2.7/site-packages/asciidocapi.py
+ cd ${pkgname}-${pkgver}
+
+ make install DESTDIR=${pkgdir}
+
+ install -Dm644 asciidocapi.py \
+ ${pkgdir}/usr/lib/python2.7/site-packages/asciidocapi.py
+
+ install -Dm644 vim/syntax/asciidoc.vim \
+ ${pkgdir}/usr/share/vim/vimfiles/syntax/asciidoc.vim
+
+ install -Dm644 vim/ftdetect/asciidoc_filetype.vim \
+ ${pkgdir}/usr/share/vim/vimfiles/ftdetect/asciidoc.vim
- find "$pkgdir/" -name '*.py' | \
- xargs sed -i "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
+ # fix FS#21579 - [asciidoc] 8.6.2-2 "asciidoc" table style doesn't work (mismatched python version)
+ sed -i 's/python/python2/' \
+ ${pkgdir}/etc/asciidoc/asciidoc.conf
}
-md5sums=('1ef39786ee1b4c8a788584e73db2c55a')
diff --git a/abs/extra/autogen/PKGBUILD b/abs/extra/autogen/PKGBUILD
index eea072e..dda533b 100644
--- a/abs/extra/autogen/PKGBUILD
+++ b/abs/extra/autogen/PKGBUILD
@@ -1,24 +1,29 @@
-# $Id: PKGBUILD 54700 2009-10-11 18:35:07Z jgc $
+# $Id: PKGBUILD 157991 2012-04-30 17:51:02Z dan $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Arjan Timmerman <arjan@soufly.nl>
# Contributor: Tor Krill
pkgname=autogen
-pkgver=5.11.5
+pkgver=5.15
pkgrel=1
pkgdesc="A tool designed to simplify the creation and maintenance of programs that contain large amounts of repetitious text"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
url="http://autogen.sourceforge.net/"
license=('GPL3')
-depends=('guile>=1.8.6' 'libxml2>=2.7.3' 'libtool>=2.2.6a')
-options=('!libtool' '!makeflags')
+depends=('guile' 'libxml2')
+options=('!libtool')
install=autogen.install
-source=(http://downloads.sourceforge.net/autogen/${pkgname}-${pkgver}.tar.bz2)
+source=(http://ftp.gnu.org/gnu/${pkgname}/rel${pkgver}/${pkgname}-${pkgver}.tar.xz{,.sig})
+md5sums=('5fba3c0e1ec0965061f27e8e79bd6da2'
+ 'ed74e586ade1a61f753d391f3849c25b')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR="${pkgdir}" install || return 1
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
-md5sums=('51c841eab6114de22b55f77a1c4f85b8')
diff --git a/abs/extra/bdf-unifont/PKGBUILD b/abs/extra/bdf-unifont/PKGBUILD
index 2df7993..bc82824 100644
--- a/abs/extra/bdf-unifont/PKGBUILD
+++ b/abs/extra/bdf-unifont/PKGBUILD
@@ -3,22 +3,19 @@
pkgname=bdf-unifont
pkgver=5.1.20080820
-pkgrel=1
+pkgrel=2
pkgdesc="GNU Unifont Glyphs"
-arch=('i686' 'x86_64')
+arch=('any')
license=('custom' 'GPL2')
url="http://unifoundry.com/unifont.html"
depends=('fontconfig' 'xorg-fonts-encodings' 'xorg-font-utils')
install=unifont.install
-source=('http://unifoundry.com/unifont-5.1.20080820.bdf.gz' 'LICENSE')
+source=("http://unifoundry.com/unifont-${pkgver}.bdf.gz" 'LICENSE')
md5sums=('6b8263ceccef33bd633aa019d74b7943'
'64da5a96d6789d29d485cd67a43bc547')
-build() {
- install -Dm644 ${srcdir}/unifont-5.1.20080820.bdf \
- ${pkgdir}/usr/share/fonts/misc/unifont.bdf
-
- # install LICENSE file
+package() {
+ install -Dm644 ${srcdir}/unifont-${pkgver}.bdf \
+ ${pkgdir}/usr/share/fonts/misc/unifont.bdf
install -Dm644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
-
diff --git a/abs/extra/blas/LICENSE.blas b/abs/extra/blas/LICENSE.blas
new file mode 100644
index 0000000..79f3838
--- /dev/null
+++ b/abs/extra/blas/LICENSE.blas
@@ -0,0 +1,19 @@
+From: http://www.netlib.org/blas/faq.html
+
+ 2) Are there legal restrictions on the use of BLAS reference
+ implementation software?
+
+The reference BLAS is a freely-available software package. It is
+available from netlib via anonymous ftp and the World Wide Web. Thus,
+it can be included in commercial software packages (and has been). We
+only ask that proper credit be given to the authors.
+
+Like all software, it is copyrighted. It is not trademarked, but we do
+ask the following:
+
+If you modify the source for these routines we ask that you change the
+name of the routine and comment the changes made to the original.
+
+We will gladly answer any questions regarding the software. If a
+modification is done, however, it is the responsibility of the person
+who modified the routine to provide support.
diff --git a/abs/extra/blas/Makefile.blas b/abs/extra/blas/Makefile.blas
new file mode 100644
index 0000000..0c6cd06
--- /dev/null
+++ b/abs/extra/blas/Makefile.blas
@@ -0,0 +1,149 @@
+include ../../make.inc
+
+#######################################################################
+# This is the makefile to create a library for the BLAS.
+# The files are grouped as follows:
+#
+# SBLAS1 -- Single precision real BLAS routines
+# CBLAS1 -- Single precision complex BLAS routines
+# DBLAS1 -- Double precision real BLAS routines
+# ZBLAS1 -- Double precision complex BLAS routines
+#
+# CB1AUX -- Real BLAS routines called by complex routines
+# ZB1AUX -- D.P. real BLAS routines called by d.p. complex
+# routines
+#
+# ALLBLAS -- Auxiliary routines for Level 2 and 3 BLAS
+#
+# SBLAS2 -- Single precision real BLAS2 routines
+# CBLAS2 -- Single precision complex BLAS2 routines
+# DBLAS2 -- Double precision real BLAS2 routines
+# ZBLAS2 -- Double precision complex BLAS2 routines
+#
+# SBLAS3 -- Single precision real BLAS3 routines
+# CBLAS3 -- Single precision complex BLAS3 routines
+# DBLAS3 -- Double precision real BLAS3 routines
+# ZBLAS3 -- Double precision complex BLAS3 routines
+#
+# The library can be set up to include routines for any combination
+# of the four precisions. To create or add to the library, enter make
+# followed by one or more of the precisions desired. Some examples:
+# make single
+# make single complex
+# make single double complex complex16
+# Note that these commands are not safe for parallel builds.
+#
+# Alternatively, the commands
+# make all
+# or
+# make
+# without any arguments creates a library of all four precisions.
+# The name of the library is held in BLASLIB, which is set in the
+# top-level make.inc
+#
+# To remove the object files after the library is created, enter
+# make clean
+# To force the source files to be recompiled, enter, for example,
+# make single FRC=FRC
+#
+#---------------------------------------------------------------------
+#
+# Edward Anderson, University of Tennessee
+# March 26, 1990
+# Susan Ostrouchov, Last updated September 30, 1994
+# ejr, May 2006.
+#
+#######################################################################
+
+all: $(BLASLIB)
+
+#---------------------------------------------------------
+# Comment out the next 6 definitions if you already have
+# the Level 1 BLAS.
+#---------------------------------------------------------
+SBLAS1 = isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \
+ srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o
+$(SBLAS1): $(FRC)
+
+CBLAS1 = scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \
+ cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o
+$(CBLAS1): $(FRC)
+
+DBLAS1 = idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \
+ drot.o drotg.o dscal.o dsdot.o dswap.o drotmg.o drotm.o
+$(DBLAS1): $(FRC)
+
+ZBLAS1 = dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \
+ zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o
+$(ZBLAS1): $(FRC)
+
+CB1AUX = isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o
+$(CB1AUX): $(FRC)
+
+ZB1AUX = idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o
+$(ZB1AUX): $(FRC)
+
+#---------------------------------------------------------------------
+# The following line defines auxiliary routines needed by both the
+# Level 2 and Level 3 BLAS. Comment it out only if you already have
+# both the Level 2 and 3 BLAS.
+#---------------------------------------------------------------------
+ALLBLAS = lsame.o xerbla.o xerbla_array.o
+$(ALLBLAS) : $(FRC)
+
+#---------------------------------------------------------
+# Comment out the next 4 definitions if you already have
+# the Level 2 BLAS.
+#---------------------------------------------------------
+SBLAS2 = sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \
+ strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \
+ sger.o ssyr.o sspr.o ssyr2.o sspr2.o
+$(SBLAS2): $(FRC)
+
+CBLAS2 = cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \
+ ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \
+ cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o
+$(CBLAS2): $(FRC)
+
+DBLAS2 = dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \
+ dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \
+ dger.o dsyr.o dspr.o dsyr2.o dspr2.o
+$(DBLAS2): $(FRC)
+
+ZBLAS2 = zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \
+ ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \
+ zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o
+$(ZBLAS2): $(FRC)
+
+#---------------------------------------------------------
+# Comment out the next 4 definitions if you already have
+# the Level 3 BLAS.
+#---------------------------------------------------------
+SBLAS3 = sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o
+$(SBLAS3): $(FRC)
+
+CBLAS3 = cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \
+ chemm.o cherk.o cher2k.o
+$(CBLAS3): $(FRC)
+
+DBLAS3 = dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o
+$(DBLAS3): $(FRC)
+
+ZBLAS3 = zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \
+ zhemm.o zherk.o zher2k.o
+$(ZBLAS3): $(FRC)
+
+ALLOBJ=$(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
+ $(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) \
+ $(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
+
+clean:
+ rm -f *.o libblas.a libblas.so*
+
+static: $(ALLOBJ)
+ ar ruv libblas.a $(ALLOBJ)
+ ranlib libblas.a
+
+shared: $(ALLOBJ)
+ cc $(CFLAGS) -shared -Wl,-soname,libblas.so.3 -o libblas.so.3.4.0 $(ALLOBJ) -lm -lgfortran -lc
+
diff --git a/abs/extra/blas/PKGBUILD b/abs/extra/blas/PKGBUILD
new file mode 100755
index 0000000..94dd1c4
--- /dev/null
+++ b/abs/extra/blas/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 130989 2011-07-09 12:22:58Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Jason Taylor <jftaylor21@gmail.com>
+
+pkgname=blas
+pkgver=3.4.0
+pkgrel=1
+url="http://www.netlib.org/blas"
+makedepends=('gcc-fortran')
+depends=('gcc-libs')
+pkgdesc="Basic Linear Algebra Subprograms"
+arch=('i686' 'x86_64')
+license=("custom")
+source=(http://www.netlib.org/lapack/lapack-${pkgver}.tgz
+ Makefile.blas
+ LICENSE.blas)
+sha1sums=('910109a931524f8dcc2734ce23fe927b00ca199f'
+ '85996f56c13991fc69481c0e88ef905a0dcefb49'
+ '2491a151a37f0162b25fc4e4e9a8ac444b574a76')
+
+build() {
+ cd "${srcdir}/lapack-${pkgver}"
+ cp -f "${srcdir}/Makefile.blas" BLAS/SRC/Makefile
+ cp -f INSTALL/make.inc.gfortran make.inc
+
+ export FC=gfortran
+
+ pushd BLAS/SRC
+ make clean
+ FFLAGS="${CFLAGS/-O?/-O0}" make dcabs1.o
+ FFLAGS="${CFLAGS} -fPIC" CFLAGS="${CFLAGS} -fPIC" make shared
+ cp libblas.so.${pkgver} "${srcdir}/lapack-${pkgver}/"
+
+ popd
+ ln -s libblas.so.${pkgver} libblas.so
+
+}
+
+package_blas() {
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m755 "${srcdir}/lapack-${pkgver}/libblas.so.${pkgver}" \
+ "${pkgdir}/usr/lib/"
+ ln -sf libblas.so.${pkgver} "${pkgdir}/usr/lib/libblas.so"
+ ln -sf libblas.so.${pkgver} "${pkgdir}/usr/lib/libblas.so.3"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/blas"
+ install -m644 "${srcdir}/LICENSE.blas" \
+ "${pkgdir}/usr/share/licenses/blas/LICENSE"
+}
+
diff --git a/abs/extra/blas/lapack-3.1.1-make.inc.patch b/abs/extra/blas/lapack-3.1.1-make.inc.patch
new file mode 100644
index 0000000..c807ccb
--- /dev/null
+++ b/abs/extra/blas/lapack-3.1.1-make.inc.patch
@@ -0,0 +1,23 @@
+--- lapack-3.1.1/INSTALL/make.inc.gfortran.BAD 2007-05-25 15:34:55.000000000 -0500
++++ lapack-3.1.1/INSTALL/make.inc.gfortran 2007-05-25 15:35:51.000000000 -0500
+@@ -8,7 +8,7 @@ SHELL = /bin/sh
+ #
+ # The machine (platform) identifier to append to the library names
+ #
+-PLAT = _LINUX
++PLAT =
+ #
+ # Modify the FORTRAN and OPTS definitions to refer to the
+ # compiler and desired compiler options for your machine. NOOPT
+@@ -17,9 +17,9 @@ PLAT = _LINUX
+ # desired load options for your machine.
+ #
+ FORTRAN = gfortran
+-OPTS = -O2
++#OPTS = -O2
+ DRVOPTS = $(OPTS)
+-NOOPT = -O0
++NOOPT =
+ LOADER = gfortran
+ LOADOPTS =
+ #
diff --git a/abs/extra/bmp/0.9.7-visualization.patch b/abs/extra/bmp/0.9.7-visualization.patch
deleted file mode 100644
index ac03323..0000000
--- a/abs/extra/bmp/0.9.7-visualization.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- beep/vis.c 2004-12-04 10:04:29.000000000 +0100
-+++ beep/vis.c 2005-02-17 12:02:25.391044008 +0100
-@@ -223,7 +223,8 @@ vis_draw(Widget * w)
- /* FIXME: The check "shouldn't" be neccessary? */
- /* if (GTK_IS_WINDOW(vis->vs_window)) { */
- GDK_THREADS_ENTER();
-- gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc,
-+ if (GDK_IS_DRAWABLE(vis->vs_window))
-+ gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc,
- vis->vs_widget.x, vis->vs_widget.y,
- vis->vs_widget.width, vis->vs_widget.height,
- GDK_RGB_DITHER_NORMAL, (guchar *) rgb_data,
diff --git a/abs/extra/bmp/0.9.7.1-visualization.patch b/abs/extra/bmp/0.9.7.1-visualization.patch
deleted file mode 100644
index ac03323..0000000
--- a/abs/extra/bmp/0.9.7.1-visualization.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- beep/vis.c 2004-12-04 10:04:29.000000000 +0100
-+++ beep/vis.c 2005-02-17 12:02:25.391044008 +0100
-@@ -223,7 +223,8 @@ vis_draw(Widget * w)
- /* FIXME: The check "shouldn't" be neccessary? */
- /* if (GTK_IS_WINDOW(vis->vs_window)) { */
- GDK_THREADS_ENTER();
-- gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc,
-+ if (GDK_IS_DRAWABLE(vis->vs_window))
-+ gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc,
- vis->vs_widget.x, vis->vs_widget.y,
- vis->vs_widget.width, vis->vs_widget.height,
- GDK_RGB_DITHER_NORMAL, (guchar *) rgb_data,
diff --git a/abs/extra/bmp/PKGBUILD b/abs/extra/bmp/PKGBUILD
deleted file mode 100644
index ffcc1bf..0000000
--- a/abs/extra/bmp/PKGBUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-# $Id: PKGBUILD 9914 2008-08-21 00:36:16Z eric $
-# Maintainer: Kevin Piche <kevin@archlinux.org>
-# Contributor: Ben <contrasutra@myrealbox.com>
-
-pkgname=bmp
-pkgver=0.9.7.1
-pkgrel=4
-pkgdesc="gtk2 port of xmms"
-arch=(i686 x86_64)
-url="http://bmp.beep-media-player.org/"
-depends=('esd' 'id3lib' 'libglade' 'libsm' 'libvorbis' 'unzip')
-source=(http://voxel.dl.sourceforge.net/sourceforge/beepmp/bmp-$pkgver.tar.gz $pkgver-visualization.patch bmp-${pkgver}-crossfade-0.3.9.patch)
-md5sums=('c25d5a8d49cc5851d13d525a20023c4c' 'fa1bdf5a8d03e8539a6bed5caa471176'\
- '42ad4109ddb66024d4c6d1f3e572ab86')
-
-build() {
- cd $startdir/src/$pkgname-$pkgver
- patch -p0 -i ../${pkgver}-visualization.patch
- patch -p1 -i ../${pkgname}-${pkgver}-crossfade-0.3.9.patch
- ./configure --prefix=/usr
- /usr/bin/make || return 1
- /usr/bin/make DESTDIR=$startdir/pkg install
- find $startdir/pkg -name '*.la' -exec rm {} \;
-}
-# vim: ts=2 sw=2 et ft=sh
diff --git a/abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch b/abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch
deleted file mode 100644
index 4c1e46d..0000000
--- a/abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-Patch taken from xmms-crossfade 3.10 tarball. Required for crossfade to
-work. http://www.eisenlohr.org/xmms-crossfade/
-
-diff -ur bmp-0.9.7.1/beep/mainwin.c bmp-0.9.7.1.patched/beep/mainwin.c
---- bmp-0.9.7.1/beep/mainwin.c 2005-05-09 10:45:39.000000000 +0200
-+++ bmp-0.9.7.1.patched/beep/mainwin.c 2005-11-25 00:03:59.000000000 +0100
-@@ -655,9 +655,11 @@
- mainwin_set_shade(!cfg.player_shaded);
- }
-
-+gboolean is_quitting = FALSE;
- void
- mainwin_quit_cb(void)
- {
-+ is_quitting = TRUE;
- gtk_widget_hide(equalizerwin);
- gtk_widget_hide(playlistwin);
- gtk_widget_hide(mainwin);
-@@ -1318,7 +1320,7 @@
- change_song(guint pos)
- {
- if (bmp_playback_get_playing())
-- bmp_playback_stop();
-+ bmp_playback_stop_for_restart();
-
- playlist_set_position(pos);
- bmp_playback_initiate();
-diff -ur bmp-0.9.7.1/beep/playback.c bmp-0.9.7.1.patched/beep/playback.c
---- bmp-0.9.7.1/beep/playback.c 2005-01-26 06:56:15.000000000 +0100
-+++ bmp-0.9.7.1.patched/beep/playback.c 2005-11-25 00:03:59.000000000 +0100
-@@ -89,7 +89,7 @@
- return;
-
- if (bmp_playback_get_playing())
-- bmp_playback_stop();
-+ bmp_playback_stop_for_restart();
-
- vis_clear_data(mainwin_vis);
- vis_clear_data(playlistwin_vis);
-@@ -135,6 +135,15 @@
- get_current_input_plugin()->pause(ip_data.paused);
- }
-
-+gboolean input_stopped_for_restart = FALSE;
-+void
-+bmp_playback_stop_for_restart(void)
-+{
-+ input_stopped_for_restart = TRUE;
-+ bmp_playback_stop();
-+ input_stopped_for_restart = FALSE;
-+}
-+
- void
- bmp_playback_stop(void)
- {
-diff -ur bmp-0.9.7.1/beep/playback.h bmp-0.9.7.1.patched/beep/playback.h
---- bmp-0.9.7.1/beep/playback.h 2004-12-04 10:04:26.000000000 +0100
-+++ bmp-0.9.7.1.patched/beep/playback.h 2005-11-25 00:03:59.000000000 +0100
-@@ -26,6 +26,7 @@
- void bmp_playback_initiate(void);
- void bmp_playback_pause(void);
- void bmp_playback_stop(void);
-+void bmp_playback_stop_for_restart(void);
- gboolean bmp_playback_play_file(const gchar * filename);
- gboolean bmp_playback_get_playing(void);
- gboolean bmp_playback_get_paused(void);
-diff -ur bmp-0.9.7.1/beep/playlist.c bmp-0.9.7.1.patched/beep/playlist.c
---- bmp-0.9.7.1/beep/playlist.c 2005-08-11 09:25:51.000000000 +0200
-+++ bmp-0.9.7.1.patched/beep/playlist.c 2005-11-25 00:03:59.000000000 +0100
-@@ -817,7 +817,7 @@
- if (bmp_playback_get_playing()) {
- /* We need to stop before changing playlist_position */
- PLAYLIST_UNLOCK();
-- bmp_playback_stop();
-+ bmp_playback_stop_for_restart();
- PLAYLIST_LOCK();
- restart_playing = TRUE;
- }
-@@ -868,7 +868,7 @@
- if (bmp_playback_get_playing()) {
- /* We need to stop before changing playlist_position */
- PLAYLIST_UNLOCK();
-- bmp_playback_stop();
-+ bmp_playback_stop_for_restart();
- PLAYLIST_LOCK();
- restart_playing = TRUE;
- }
-@@ -1018,7 +1018,7 @@
- if (bmp_playback_get_playing()) {
- /* We need to stop before changing playlist_position */
- PLAYLIST_UNLOCK();
-- bmp_playback_stop();
-+ bmp_playback_stop_for_restart();
- PLAYLIST_LOCK();
- restart_playing = TRUE;
- }
-@@ -1047,7 +1047,10 @@
- {
- GList *plist_pos_list;
-
-- bmp_playback_stop();
-+ if (cfg.repeat)
-+ bmp_playback_stop_for_restart();
-+ else
-+ bmp_playback_stop();
-
- PLAYLIST_LOCK();
- plist_pos_list = find_playlist_position_list();
diff --git a/abs/extra/boost/PKGBUILD b/abs/extra/boost/PKGBUILD
index f9502a9..7629843 100644
--- a/abs/extra/boost/PKGBUILD
+++ b/abs/extra/boost/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: PKGBUILD 163703 2012-07-18 01:05:09Z ibiru $
# Maintainer: kevin <kevin@archlinux.org>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Kritoke <kritoke@gamebox.net>
@@ -6,28 +6,26 @@
pkgbase=boost
pkgname=('boost-libs' 'boost')
-pkgver=1.49.0
+pkgver=1.50.0
_boostver=${pkgver//./_}
pkgrel=1
arch=('i686' 'x86_64')
url="http://www.boost.org/"
-makedepends=('icu' 'python2' 'bzip2' 'zlib' 'openmpi')
-source=(http://downloads.sourceforge.net/sourceforge/${pkgbase}/${pkgbase}_${_boostver}.tar.gz
- exceptions.patch)
+makedepends=('icu' 'python2' 'bzip2' 'zlib' 'openmpi')
+source=(http://downloads.sourceforge.net/${pkgbase}/${pkgbase}_${_boostver}.tar.gz)
license=('custom')
+md5sums=('dbc07ab0254df3dda6300fd737b3f264')
_stagedir="${srcdir}/stagedir"
build() {
# set python path for bjam
cd "${srcdir}/${pkgbase}_${_boostver}/tools"
- echo "using python : 2.6 : /usr/bin/python2 ;" >> build/v2/user-config.jam
+ echo "using python : 2.7 : /usr/bin/python2 ;" >> build/v2/user-config.jam
#echo "using python : 3.2 : /usr/bin/python : /usr/include/python3.2mu : /usr/lib ;" >> build/v2/user-config.jam
echo "using mpi ;" >> build/v2/user-config.jam
cd "${srcdir}"/${pkgbase}_${_boostver}
- # https://svn.boost.org/trac/boost/ticket/5731
- patch -p0 -i "${srcdir}/exceptions.patch"
# build bjam
cd "${srcdir}/${pkgbase}_${_boostver}/tools/build/v2/engine"
@@ -78,7 +76,9 @@ build() {
package_boost() {
pkgdesc="Free peer-reviewed portable C++ source libraries - Development"
depends=("boost-libs=${pkgver}")
- optdepends=('python2: for python2 bindings')
+ optdepends=(#'python: for python bindings'
+ 'python2: for python2 bindings'
+ 'boost-build: to use boost jam for building your project.')
install -d "${pkgdir}"/usr/{include,lib,share}
# headers/source files
@@ -111,5 +111,3 @@ package_boost-libs() {
install -D -m644 "${srcdir}/${pkgbase}_${_boostver}/LICENSE_1_0.txt" \
"${pkgdir}"/usr/share/licenses/boost-libs/LICENSE_1_0.txt
}
-md5sums=('e0defc8c818e4f1c5bbb29d0292b76ca'
- 'bedd276510b6ad1ff2b4d143de21373e')
diff --git a/abs/extra/boost/__changelog b/abs/extra/boost/__changelog
deleted file mode 100644
index f0c532d..0000000
--- a/abs/extra/boost/__changelog
+++ /dev/null
@@ -1,3 +0,0 @@
-* remove 'python' dep (aka python3)
-* change python 2.7 refrence to 2.6
-* remove python optdep for the libs package
diff --git a/abs/extra/boost/exceptions.patch b/abs/extra/boost/exceptions.patch
deleted file mode 100644
index 0322db6..0000000
--- a/abs/extra/boost/exceptions.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -up boost/numeric/conversion/converter_policies.hpp\~ boost/numeric/conversion/converter_policies.hpp
---- boost/numeric/conversion/converter_policies.hpp~ 2008-10-13 11:00:03.000000000 +0200
-+++ boost/numeric/conversion/converter_policies.hpp 2011-07-22 11:46:40.961876274 +0200
-@@ -20,6 +20,7 @@
-
- #include "boost/mpl/if.hpp"
- #include "boost/mpl/integral_c.hpp"
-+#include "boost/throw_exception.hpp"
-
- namespace boost { namespace numeric
- {
-@@ -159,9 +160,9 @@ struct def_overflow_handler
- void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)
- {
- if ( r == cNegOverflow )
-- throw negative_overflow() ;
-+ boost::throw_exception( negative_overflow() ) ;
- else if ( r == cPosOverflow )
-- throw positive_overflow() ;
-+ boost::throw_exception( positive_overflow() ) ;
- }
- } ;
-
-
-Diff finished. Fri Jul 22 11:46:49 2011
diff --git a/abs/extra/cifs-utils/PKGBUILD b/abs/extra/cifs-utils/PKGBUILD
new file mode 100644
index 0000000..f220fa4
--- /dev/null
+++ b/abs/extra/cifs-utils/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 161430 2012-06-11 13:06:12Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=cifs-utils
+pkgver=5.5
+pkgrel=1
+pkgdesc="CIFS filesystem user-space tools"
+arch=(i686 x86_64)
+url="http://wiki.samba.org/index.php/LinuxCIFS_utils"
+license=('GPL')
+depends=('libcap-ng' 'keyutils' 'krb5' 'talloc' 'libwbclient')
+source=(ftp://ftp.samba.org/pub/linux-cifs/cifs-utils/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" ROOTSBINDIR=/usr/bin install
+ # set mount.cifs uid, to enable none root mounting form fstab
+ chmod +s $pkgdir/usr/bin/mount.cifs
+}
+md5sums=('4de6c660ccdb9506d0e2cff4f37b8707')
diff --git a/abs/extra/colord/PKGBUILD b/abs/extra/colord/PKGBUILD
new file mode 100644
index 0000000..68479bb
--- /dev/null
+++ b/abs/extra/colord/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 161614 2012-06-12 13:49:01Z heftig $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=colord
+pkgver=0.1.21
+pkgrel=2
+pkgdesc="Color daemon"
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/software/colord"
+license=('GPL2')
+depends=('lcms2' 'libgusb' 'polkit' 'shared-color-profiles' 'sqlite' 'udev')
+makedepends=('intltool' 'gobject-introspection' 'vala' 'docbook2x')
+source=($url/releases/$pkgname-$pkgver.tar.xz)
+options=('!libtool')
+sha1sums=('dbf981beec70e81c45cf46b150f426fc1eb56c24')
+
+build() {
+ cd "$pkgname-$pkgver"
+
+ # put udev files in /usr/lib
+ sed -i "/slashlibdir=/s#/lib#/usr/lib#" configure
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc --libexecdir=/usr/lib/colord \
+ --localstatedir=/var --disable-static \
+ --with-systemdsystemunitdir=/usr/lib/systemd/system
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install \
+ bashcompletiondir=/usr/share/bash-completion/completions
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/community/cpulimit/PKGBUILD b/abs/extra/community/cpulimit/PKGBUILD
index 28a3b55..cb73d72 100644
--- a/abs/extra/community/cpulimit/PKGBUILD
+++ b/abs/extra/community/cpulimit/PKGBUILD
@@ -1,20 +1,20 @@
-# $Id: PKGBUILD,v 1.6 2009/02/09 18:02:27 abhidg Exp $
-# Maintainer: Sergej Pupykin <sergej@aur.archlinux.org>
-# Contributor: Sergej Pupykin <sergej@aur.archlinux.org>
+# $Id: PKGBUILD 65094 2012-02-20 03:37:27Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=cpulimit
pkgver=1.1
-pkgrel=1
+pkgrel=3
pkgdesc="Limit cpu usage in %. Actualy sends SIGSTOP/SIGCONT"
arch=('i686' 'x86_64')
url="http://cpulimit.sourceforge.net/"
license=("GPL")
+depends=(glibc)
source=("http://downloads.sourceforge.net/sourceforge/cpulimit/cpulimit-$pkgver.tar.gz")
md5sums=('f4ff6d4bfaef1258e8f5cd2041e2e2a3')
-build () {
- cd $startdir/src/$pkgname-$pkgver
+build() {
+ cd $srcdir/$pkgname-$pkgver
make
- install -D -m0755 cpulimit $startdir/pkg/usr/bin/cpulimit
+ install -D -m0755 cpulimit $pkgdir/usr/bin/cpulimit
}
-
diff --git a/abs/extra/community/desktop-file-utils/PKGBUILD b/abs/extra/community/desktop-file-utils/PKGBUILD
index 8673057..1588bfc 100644
--- a/abs/extra/community/desktop-file-utils/PKGBUILD
+++ b/abs/extra/community/desktop-file-utils/PKGBUILD
@@ -1,20 +1,24 @@
-# $Id: PKGBUILD 73005 2010-03-21 18:23:06Z jgc $
+# $Id: PKGBUILD 161386 2012-06-10 16:51:40Z jgc $
# Maintainer: Alexander Fehr <pizzapunk gmail com>
pkgname=desktop-file-utils
-pkgver=0.16
+pkgver=0.20
pkgrel=1
pkgdesc="Command line utilities for working with desktop entries"
arch=('i686' 'x86_64')
url="http://www.freedesktop.org/wiki/Software/desktop-file-utils"
license=('GPL')
depends=('glib2')
-source=(http://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${pkgver}.tar.bz2)
+source=(http://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${pkgver}.tar.xz)
+md5sums=('8c85cbc13632ba69077c6bc41ce4d0ac')
build() {
cd "${srcdir}/desktop-file-utils-${pkgver}"
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR="${pkgdir}" install || return 1
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/desktop-file-utils-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
-md5sums=('6811712bced796d025d1a8a0f728d941')
diff --git a/abs/extra/community/enca/PKGBUILD b/abs/extra/community/enca/PKGBUILD
index e398023..fdcea7c 100644
--- a/abs/extra/community/enca/PKGBUILD
+++ b/abs/extra/community/enca/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id$
+# $Id: PKGBUILD 143739 2011-11-28 18:10:34Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Filip Dvorak <fila@pruda.com>
pkgname=enca
pkgver=1.13
-pkgrel=1
+pkgrel=2
pkgdesc="Charset analyser and converter"
arch=('i686' 'x86_64')
url="http://freshmeat.net/projects/enca/"
options=('!libtool')
license=('GPL')
-depends=('recode' 'sh')
-source=(http://dl.cihar.com/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+depends=('recode' 'bash')
+source=("http://dl.cihar.com/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
md5sums=('762bead5d9a0a5e55024e1102baaa89d')
build() {
@@ -22,6 +22,11 @@ build() {
--mandir=/usr/share/man \
--with-librecode=/usr \
--enable-external
- make || return 1
- make DESTDIR="${pkgdir}" install || return 1
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/community/gstreamer0.10-base/PKGBUILD b/abs/extra/community/gstreamer0.10-base/PKGBUILD
index 8b115a1..5bfea48 100644
--- a/abs/extra/community/gstreamer0.10-base/PKGBUILD
+++ b/abs/extra/community/gstreamer0.10-base/PKGBUILD
@@ -1,46 +1,53 @@
-# $Id: PKGBUILD 87769 2010-08-18 09:20:05Z jgc $
+# $Id: PKGBUILD 153257 2012-03-12 15:48:41Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=('gstreamer0.10-base')
pkgname=('gstreamer0.10-base' 'gstreamer0.10-base-plugins')
-pkgver=0.10.30
+pkgver=0.10.36
pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL')
-makedepends=('pkgconfig' 'gstreamer0.10>=0.10.30' 'orc>=0.4.6' 'libsm>=1.1.1' 'libxv>=1.0.5' 'alsa-lib>=1.0.23' 'cdparanoia>=10.2' 'libvisual>=0.4.0' 'libvorbis>=1.3.1' 'libtheora>=1.1.1' 'pango>=1.28.1' 'udev>=151' 'gobject-introspection')
+makedepends=('pkgconfig' 'gstreamer0.10>=0.10.35' 'orc' 'libxv' 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango' 'gobject-introspection')
options=(!libtool !emptydirs)
url="http://gstreamer.freedesktop.org/"
-source=(${url}/src/gst-plugins-base/gst-plugins-base-${pkgver}.tar.bz2)
-sha256sums=('63938641380be9935c804ae8d55acdcfd93920ed2deb72dcf70f027a78b085d7')
+source=(${url}/src/gst-plugins-base/gst-plugins-base-${pkgver}.tar.xz)
+sha256sums=('1fe45c3894903001d4d008b0713dab089f53726dcb5842d5b40c2595a984e64a')
build() {
cd "${srcdir}/gst-plugins-base-${pkgver}"
+ sed -i '/AC_PATH_XTRA/d' configure.ac
+ autoreconf
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--disable-static --enable-experimental --disable-gnome_vfs \
--with-package-name="GStreamer Base Plugins (Archlinux)" \
- --with-package-origin="http://www.archlinux.org/" || return 1
+ --with-package-origin="http://www.archlinux.org/"
- make || return 1
- sed -e 's/^SUBDIRS_EXT =.*/SUBDIRS_EXT =/' -i Makefile || return 1
+ make
+ sed -e 's/^SUBDIRS_EXT =.*/SUBDIRS_EXT =/' -i Makefile
+}
+
+check() {
+ cd "${srcdir}/gst-plugins-base-${pkgver}"
+ make check
}
package_gstreamer0.10-base() {
pkgdesc="GStreamer Multimedia Framework Base plugin libraries"
- depends=('gstreamer0.10>=0.10.30' 'orc>=0.4.6' 'libsm>=1.1.1' 'libxv>=1.0.5' 'udev>=151')
+ depends=('gstreamer0.10>=0.10.35' 'orc' 'libxv')
cd "${srcdir}/gst-plugins-base-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
+ make DESTDIR="${pkgdir}" install
}
package_gstreamer0.10-base-plugins() {
pkgdesc="GStreamer Multimedia Framework Base Plugins (gst-plugins-base)"
- depends=("gstreamer0.10-base=${pkgver}" 'alsa-lib>=1.0.23' 'cdparanoia>=10.2' 'libvisual>=0.4.0' 'libvorbis>=1.3.1' 'libtheora>=1.1.1' 'pango>=1.28.1')
+ depends=("gstreamer0.10-base=${pkgver}" 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango')
replaces=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-ogg')
conflicts=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-ogg')
groups=('gstreamer0.10-plugins')
cd "${srcdir}/gst-plugins-base-${pkgver}"
- make -C gst-libs DESTDIR="${pkgdir}" install || return 1
- make -C ext DESTDIR="${pkgdir}" install || return 1
- make -C gst-libs DESTDIR="${pkgdir}" uninstall || return 1
+ make -C gst-libs DESTDIR="${pkgdir}" install
+ make -C ext DESTDIR="${pkgdir}" install
+ make -C gst-libs DESTDIR="${pkgdir}" uninstall
}
diff --git a/abs/extra/community/gstreamer0.10/PKGBUILD b/abs/extra/community/gstreamer0.10/PKGBUILD
index 0a52614..07299a4 100644
--- a/abs/extra/community/gstreamer0.10/PKGBUILD
+++ b/abs/extra/community/gstreamer0.10/PKGBUILD
@@ -1,32 +1,40 @@
-# $Id: PKGBUILD 87764 2010-08-18 09:05:27Z jgc $
+# $Id: PKGBUILD 153252 2012-03-12 14:53:39Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gstreamer0.10
-pkgver=0.10.30
+pkgver=0.10.36
pkgrel=1
pkgdesc="GStreamer Multimedia Framework"
arch=('i686' 'x86_64')
license=('LGPL')
url="http://gstreamer.freedesktop.org/"
-depends=('libxml2>=2.7.7' 'glib2>=2.24.1')
+depends=('libxml2' 'glib2')
+optdepends=('sh: feedback script')
makedepends=('intltool' 'pkgconfig' 'gtk-doc' 'gobject-introspection')
options=('!libtool')
-source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.bz2)
-sha256sums=('e8ef301be423797ff36a0bb3615930b112b4175634051d19fd655e0ed974532a')
+source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.xz)
+md5sums=('15389c73e091b1dda915279c388b9cb2')
build() {
cd "${srcdir}/gstreamer-${pkgver}"
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib \
--with-package-name="GStreamer (Archlinux)" \
- --with-package-origin="http://www.archlinux.org/"
+ --with-package-origin="http://www.archlinux.org/" \
+ --enable-gtk-doc --disable-static
make
}
+
+check() {
+ cd "${srcdir}/gstreamer-${pkgver}"
+ make check
+}
+
package() {
cd "${srcdir}/gstreamer-${pkgver}"
make DESTDIR="${pkgdir}" install
- cd "${pkgdir}/usr/bin"
#Remove unversioned gst-* binaries to get rid of conflicts
+ cd "${pkgdir}/usr/bin"
for bins in `ls *-0.10`; do
rm -f ${bins/-0.10/}
done
diff --git a/abs/extra/crda/PKGBUILD b/abs/extra/crda/PKGBUILD
index 4fbb201..88ad6cc 100644
--- a/abs/extra/crda/PKGBUILD
+++ b/abs/extra/crda/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 79865 2010-05-08 15:22:52Z thomas $
+# $Id: PKGBUILD 158615 2012-05-05 03:17:06Z allan $
# Maintainer: Thomas BĂ€chler <thomas@archlinux.org>
pkgname=crda
-pkgver=1.1.1
-pkgrel=1
-pkgdesc="Central Regulatory Domain Agent"
+pkgver=1.1.2
+pkgrel=3
+pkgdesc="Central Regulatory Domain Agent for wireless networks"
arch=(i686 x86_64)
url="http://wireless.kernel.org/en/developers/Regulatory/CRDA"
license=('custom')
@@ -12,22 +12,26 @@ depends=('wireless-regdb' 'libnl' 'libgcrypt' 'udev' 'iw')
makedepends=('python-m2crypto')
install=crda.install
source=(http://wireless.kernel.org/download/crda/${pkgname}-${pkgver}.tar.bz2
- crda.rc)
-md5sums=('5fc77af68b3e21736b8ef2f8b061c810'
- '014eef3f8655e9a130064ec6891317fc')
+ crda.rc libnl32.patch)
+md5sums=('5226f65aebacf94baaf820f8b4e06df4'
+ '014eef3f8655e9a130064ec6891317fc'
+ 'c1f7aff29f15a0364ae6f7905a1d4ae6')
build() {
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ patch -Np1 -i "$srcdir/libnl32.patch"
+ sed 's|^#!/usr/bin/env python|#!/usr/bin/python2|' -i utils/key2pub.py
+ make crda regdbdump
+}
+
+package() {
# Install crda, regdbdump and udev rules
- msg "Compiling and installing crda ..."
- cd ${srcdir}/${pkgname}-${pkgver}
- make crda regdbdump || return 1
- make DESTDIR=${pkgdir} install || return 1
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" UDEV_RULE_DIR=/usr/lib/udev/rules.d/ install
# This rule automatically sets the regulatory domain when cfg80211 is loaded
- echo 'ACTION=="add" SUBSYSTEM=="module", DEVPATH=="/module/cfg80211", RUN+="/etc/rc.d/wireless-regdom start >/dev/null"' >> ${pkgdir}/lib/udev/rules.d/85-regulatory.rules || return 1
+ echo 'ACTION=="add" SUBSYSTEM=="module", DEVPATH=="/module/cfg80211", RUN+="/etc/rc.d/wireless-regdom start >/dev/null"' >> "${pkgdir}"/usr/lib/udev/rules.d/85-regulatory.rules
- msg "Installing license ..."
- install -D -m644 ${srcdir}/${pkgname}-${pkgver}/LICENSE ${pkgdir}/usr/share/licenses/crda/LICENSE || return 1
+ install -D -m644 "${srcdir}"/${pkgname}-${pkgver}/LICENSE "${pkgdir}"/usr/share/licenses/crda/LICENSE
- msg "Installing boot script ..."
- install -D -m755 ${srcdir}/crda.rc ${pkgdir}/etc/rc.d/wireless-regdom || return 1
+ install -D -m755 "${srcdir}"/crda.rc "${pkgdir}"/etc/rc.d/wireless-regdom
}
diff --git a/abs/extra/crda/crda.conf.d b/abs/extra/crda/crda.conf.d
deleted file mode 100644
index 8511238..0000000
--- a/abs/extra/crda/crda.conf.d
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# Wireless regulatory domain configuration
-#
-
diff --git a/abs/extra/crda/libnl32.patch b/abs/extra/crda/libnl32.patch
new file mode 100644
index 0000000..682b6c5
--- /dev/null
+++ b/abs/extra/crda/libnl32.patch
@@ -0,0 +1,12 @@
+diff -u -r crda-1.1.2/Makefile crda-1.1.2-libnl32/Makefile
+--- crda-1.1.2/Makefile 2011-08-10 01:36:19.000000000 +0200
++++ crda-1.1.2-libnl32/Makefile 2012-02-09 18:53:33.376430180 +0100
+@@ -51,7 +51,7 @@
+
+ ifeq ($(NL3FOUND),Y)
+ CFLAGS += -DCONFIG_LIBNL30
+-NLLIBS += -lnl-genl
++NLLIBS += $(shell pkg-config --libs libnl-genl-3.0)
+ NLLIBNAME = libnl-3.0
+ else
+ ifeq ($(NL2FOUND),Y)
diff --git a/abs/extra/cups-filters/PKGBUILD b/abs/extra/cups-filters/PKGBUILD
new file mode 100644
index 0000000..9c98916
--- /dev/null
+++ b/abs/extra/cups-filters/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 163770 2012-07-19 15:53:24Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=cups-filters
+pkgver=1.0.19
+pkgrel=1
+pkgdesc="OpenPrinting CUPS Filters"
+arch=('i686' 'x86_64')
+url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting"
+license=('GPL')
+depends=('lcms2' 'poppler>=0.20.1')
+makedepends=('ghostscript' 'ttf-dejavu') # ttf-dejavu for make check
+optdepends=('ghostscript: for non-PostScript printers to print with CUPS to convert PostScript to raster images'
+ 'foomatic-db: drivers use Ghostscript to convert PostScript to a printable form directly'
+ 'foomatic-db-engine: drivers use Ghostscript to convert PostScript to a printable form directly'
+ 'foomatic-db-nonfree: drivers use Ghostscript to convert PostScript to a printable form directly')
+backup=(etc/fonts/conf.d/99pdftoopvp.conf)
+options=(!libtool)
+source=(http://www.openprinting.org/download/cups-filters/$pkgname-$pkgver.tar.gz
+ buildfix_poppler.diff
+ buildfix_dlopen.diff)
+md5sums=('e3c9ad58ec005eda2f0ac2f3190a63b3'
+ 'b3d5b60a50568d06d1ef43c285ce7802'
+ '8b0c8874ef5c985287cada55db75d8d1')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ # https://bugs.linuxfoundation.org/show_bug.cgi?id=1055
+ patch -Np0 -i ${srcdir}/buildfix_poppler.diff
+ patch -Np0 -i ${srcdir}/buildfix_dlopen.diff
+ autoreconf -v
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-test-font-path=/usr/share/fonts/TTF/DejaVuSans.ttf
+ make
+}
+
+check() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make -k check
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+ # drop static lib
+ rm -f ${pkgdir}/usr/lib/*.a
+}
diff --git a/abs/extra/cups-filters/buildfix_dlopen.diff b/abs/extra/cups-filters/buildfix_dlopen.diff
new file mode 100644
index 0000000..eea5f50
--- /dev/null
+++ b/abs/extra/cups-filters/buildfix_dlopen.diff
@@ -0,0 +1,31 @@
+=== modified file 'Makefile.am'
+--- Makefile.am 2012-06-22 15:40:53 +0000
++++ Makefile.am 2012-07-19 09:36:30 +0000
+@@ -329,7 +329,8 @@
+ $(FREETYPE_LIBS) \
+ $(FONTCONFIG_LIBS) \
+ $(LIBPNG_LIBS) \
+- $(POPPLER_LIBS)
++ $(POPPLER_LIBS) \
++ $(DLOPEN_LIBS)
+
+ EXTRA_DIST += $(pkgfontconfig_DATA)
+
+=== modified file 'configure.ac'
+--- configure.ac 2012-07-19 14:02:32 +0000
++++ configure.ac 2012-07-19 14:39:25 +0000
+@@ -110,6 +110,13 @@
+ AC_DEFINE(PDFTOPDF, [], [Needed for pdftopdf filter compilation])
+ AC_DEFINE_DIR(BANNERTOPDF_DATADIR, "{CUPS_DATADIR}/data", [Directory where bannertopdf finds its data files (PDF templates)])
+
++AC_SEARCH_LIBS([dlopen],
++ [dl],
++ DLOPEN_LIBS="-ldl",
++ AC_MSG_ERROR([unable to find the dlopen() function])
++)
++AC_SUBST(DLOPEN_LIBS)
++
+ # ======================
+ # Check system functions
+ # ======================
+
diff --git a/abs/extra/cups-filters/buildfix_poppler.diff b/abs/extra/cups-filters/buildfix_poppler.diff
new file mode 100644
index 0000000..6f3cbc0
--- /dev/null
+++ b/abs/extra/cups-filters/buildfix_poppler.diff
@@ -0,0 +1,224 @@
+=== modified file 'NEWS'
+--- NEWS 2012-07-11 19:48:23 +0000
++++ NEWS 2012-07-19 14:02:32 +0000
+@@ -1,6 +1,11 @@
+-NEWS - OpenPrinting CUPS Filters v1.0.19 - 2012-07-11
++NEWS - OpenPrinting CUPS Filters v1.0.20 - 2012-07-19
+ -----------------------------------------------------
+
++CHANGES IN V1.0.20
++
++ - Made the Poppler-based filters pdftopdf and pdftoopvp build with
++ both Poppler 0.18.x and 0.20.x (Bug #1055).
++
+ CHANGES IN V1.0.19
+
+ - Fixes according to Coverity scan results (Bug #1054).
+
+=== modified file 'configure.ac'
+--- configure.ac 2012-07-11 19:48:23 +0000
++++ configure.ac 2012-07-19 14:02:32 +0000
+@@ -202,6 +202,7 @@
+ # ================
+ POPPLER_INCLUDEDIR=`pkg-config poppler --variable includedir`
+ AC_CHECK_HEADER([UGooString.h], [AC_DEFINE([HAVE_UGOOSTRING_H],,[Have UGooString.h])], [])
++AC_CHECK_HEADER([poppler/cpp/poppler-version.h], [AC_DEFINE([HAVE_CPP_POPPLER_VERSION_H],,[Define if you have Poppler's "cpp/poppler-version.h" header file.])], [])
+ # FIXME:
+ # Use proper c compile check not greps and then just link again poppler with all the features
+ # instead of this and all the libs.
+
+=== modified file 'filter/PDFError.h'
+--- filter/PDFError.h 2012-03-29 14:06:07 +0000
++++ filter/PDFError.h 2012-07-19 14:02:32 +0000
+@@ -31,6 +31,9 @@
+ #include <config.h>
+ #include <stdarg.h>
+ #include <Error.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+
+ #if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 19
+ #define pdfError(pos,...) error(errInternal,pos,__VA_ARGS__)
+
+=== modified file 'filter/pdftoijs.cxx'
+--- filter/pdftoijs.cxx 2012-06-04 16:46:44 +0000
++++ filter/pdftoijs.cxx 2012-07-19 14:02:32 +0000
+@@ -30,6 +30,9 @@
+ #include <config.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include <goo/GooString.h>
+ #include <goo/gmem.h>
+ #include <Object.h>
+
+=== modified file 'filter/pdftoopvp/OPVPError.h'
+--- filter/pdftoopvp/OPVPError.h 2012-03-29 14:06:07 +0000
++++ filter/pdftoopvp/OPVPError.h 2012-07-19 14:02:32 +0000
+@@ -31,6 +31,9 @@
+ #include <config.h>
+ #include <stdarg.h>
+ #include <Error.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+
+ #if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 19
+ #define opvpError(pos,...) error(errInternal,pos,__VA_ARGS__)
+
+=== modified file 'filter/pdftoopvp/OPVPOutputDev.cxx'
+--- filter/pdftoopvp/OPVPOutputDev.cxx 2012-03-29 09:42:35 +0000
++++ filter/pdftoopvp/OPVPOutputDev.cxx 2012-07-19 14:02:32 +0000
+@@ -8,6 +8,9 @@
+ //========================================================================
+
+ #include <config.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+
+ #ifdef USE_GCC_PRAGMAS
+ #pragma implementation
+
+=== modified file 'filter/pdftoopvp/oprs/OPVPSplash.cxx'
+--- filter/pdftoopvp/oprs/OPVPSplash.cxx 2012-03-29 09:42:35 +0000
++++ filter/pdftoopvp/oprs/OPVPSplash.cxx 2012-07-19 14:02:32 +0000
+@@ -5,6 +5,9 @@
+ //========================================================================
+
+ #include <config.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+
+ #ifdef USE_GCC_PRAGMAS
+ #pragma implementation
+
+=== modified file 'filter/pdftoopvp/oprs/OPVPSplashState.cxx'
+--- filter/pdftoopvp/oprs/OPVPSplashState.cxx 2012-03-29 09:42:35 +0000
++++ filter/pdftoopvp/oprs/OPVPSplashState.cxx 2012-07-19 14:02:32 +0000
+@@ -11,6 +11,9 @@
+ #endif
+
+ #include <string.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "goo/gmem.h"
+ #include "splash/SplashPattern.h"
+ #include "splash/SplashScreen.h"
+
+=== modified file 'filter/pdftoopvp/oprs/OPVPSplashState.h'
+--- filter/pdftoopvp/oprs/OPVPSplashState.h 2012-03-29 09:42:35 +0000
++++ filter/pdftoopvp/oprs/OPVPSplashState.h 2012-07-19 14:02:32 +0000
+@@ -11,6 +11,9 @@
+ #pragma interface
+ #endif
+
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "splash/SplashTypes.h"
+ #include "splash/SplashState.h"
+ #include "splash/Splash.h"
+
+=== modified file 'filter/pdftoopvp/oprs/OPVPSplashXPath.cxx'
+--- filter/pdftoopvp/oprs/OPVPSplashXPath.cxx 2012-03-29 09:42:35 +0000
++++ filter/pdftoopvp/oprs/OPVPSplashXPath.cxx 2012-07-19 14:02:32 +0000
+@@ -1,5 +1,8 @@
+ #include <config.h>
+ #include <stdio.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "splash/Splash.h"
+ #include "splash/SplashMath.h"
+ #include "OPVPSplashClip.h"
+
+=== modified file 'filter/pdftoopvp/oprs/OPVPSplashXPath.h'
+--- filter/pdftoopvp/oprs/OPVPSplashXPath.h 2012-03-29 09:42:35 +0000
++++ filter/pdftoopvp/oprs/OPVPSplashXPath.h 2012-07-19 14:02:32 +0000
+@@ -2,6 +2,9 @@
+ #define OPVPSPLASHXPATH_H
+
+ #include <config.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "splash/SplashXPath.h"
+ #include "OPVPSplashPath.h"
+ #include "OPVPSplashState.h"
+
+=== modified file 'filter/pdftoopvp/pdftoopvp.cxx'
+--- filter/pdftoopvp/pdftoopvp.cxx 2012-06-04 16:46:44 +0000
++++ filter/pdftoopvp/pdftoopvp.cxx 2012-07-19 14:02:32 +0000
+@@ -13,6 +13,9 @@
+ #include <unistd.h>
+ #include <ctype.h>
+ #include <math.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "goo/GooString.h"
+ #define GSTRING_H // for old GooString.h
+ #include "goo/gmem.h"
+
+=== modified file 'filter/pdftopdf/P2PError.h'
+--- filter/pdftopdf/P2PError.h 2012-03-29 14:06:07 +0000
++++ filter/pdftopdf/P2PError.h 2012-07-19 14:02:32 +0000
+@@ -31,6 +31,9 @@
+ #include <config.h>
+ #include <stdarg.h>
+ #include <Error.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+
+ #if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 19
+ #define p2pError(pos,...) error(errInternal,pos,__VA_ARGS__)
+
+=== modified file 'filter/pdftopdf/P2PFont.cxx'
+--- filter/pdftopdf/P2PFont.cxx 2012-03-29 09:42:35 +0000
++++ filter/pdftopdf/P2PFont.cxx 2012-07-19 14:02:32 +0000
+@@ -32,6 +32,9 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+ #include <fcntl.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "goo/gmem.h"
+ #include "P2PFont.h"
+ #include "GfxFont.h"
+
+=== modified file 'filter/pdftopdf/pdftopdf.cxx'
+--- filter/pdftopdf/pdftopdf.cxx 2012-06-04 16:46:44 +0000
++++ filter/pdftopdf/pdftopdf.cxx 2012-07-19 14:02:32 +0000
+@@ -29,6 +29,9 @@
+ #include <config.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "goo/GooString.h"
+ #include "goo/gmem.h"
+ #include "Object.h"
+
+=== modified file 'filter/pdftoraster.cxx'
+--- filter/pdftoraster.cxx 2012-06-04 16:46:44 +0000
++++ filter/pdftoraster.cxx 2012-07-19 14:02:32 +0000
+@@ -31,6 +31,9 @@
+ #include <config.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#ifdef HAVE_CPP_POPPLER_VERSION_H
++#include "cpp/poppler-version.h"
++#endif
+ #include "goo/GooString.h"
+ #include "goo/gmem.h"
+ #include "Object.h"
+
diff --git a/abs/extra/cups/PKGBUILD b/abs/extra/cups/PKGBUILD
index 730bed3..9a55d2f 100644
--- a/abs/extra/cups/PKGBUILD
+++ b/abs/extra/cups/PKGBUILD
@@ -1,74 +1,133 @@
-# $Id: PKGBUILD 98719 2010-11-12 22:23:13Z andyrtr $
+# $Id: PKGBUILD 161774 2012-06-13 17:38:37Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgbase="cups"
pkgname=('libcups' 'cups')
-pkgver=1.4.5
-pkgrel=1
+pkgver=1.5.3
+pkgrel=5
arch=('i686' 'x86_64')
license=('GPL')
url="http://www.cups.org/"
-makedepends=('libtiff>=3.9.2-2' 'libpng>=1.4.0' 'acl' 'openslp' 'pam' 'xdg-utils' 'heimdal>=1.3.1' 'gnutls>=2.8.3' 'poppler>=0.12.3'
- 'xinetd' 'gzip' 'autoconf' 'php' 'libusb' 'dbus-core' 'avahi' 'hicolor-icon-theme')
+makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'openslp' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'cups-filters' 'bc'
+ 'xinetd' 'gzip' 'autoconf' 'libusb' 'dbus-core' 'avahi' 'hicolor-icon-theme' 'systemd')
source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2
- cups-avahi.patch
+ cups-avahi-1-config.patch
+ cups-avahi-2-backend.patch
+ cups-avahi-3-timeouts.patch
+ cups-avahi-4-poll.patch
+ cups-avahi-5-services.patch
+ cups-no-export-ssllibs.patch
+ cups-no-gcrypt.patch
+ cups-no-gzip-man.patch
+ cups-systemd-socket.patch
cups cups.logrotate cups.pam)
#options=('!emptydirs')
-md5sums=('50729f6fc46ba54223e0eaf5009f3419'
- '8ebd390197501ffd709f0ee546937fd5'
- '5c85b7d8d2ddd02c2c64955cebbf55ea'
+md5sums=('e1ad15257aa6f162414ea3beae0c5df8'
+ '12c8af5bcd3b8f84240280b3dfaf9e89'
+ 'cdc1322c8014297ae349e2db78a03c5a'
+ '1a5112f63958643f2888abc9418dbcac'
+ 'c37d1bf1bb76acc3fe93362c80d91b7c'
+ '5d302860559960042f3b47a91b97c5fe'
+ '9b8467a1e51d360096b70e2c3c081e6c'
+ '3733c23e77eb503bd94cc368e02830dc'
+ 'c9159ba1233902ba6ddbbe6885a46b72'
+ '4505b8b2c57a7c28ea79e08388bbbbb9'
+ '9657daa21760bb0b5fa3d8b51d5e01a1'
'f861b18f4446c43918c8643dcbbd7f6d'
'96f82c38f3f540b53f3e5144900acf17')
build() {
cd ${srcdir}/${pkgbase}-${pkgver}
- # Avahi support in the dnssd backend. patch from Fedora
- patch -Np1 -i ${srcdir}/cups-avahi.patch || return 1
+ # http://www.cups.org/str.php?L3066
+ # Avahi support in the dnssd backend. patches from upstream/FC RawHide
+ patch -Np1 -i ${srcdir}/cups-avahi-1-config.patch
+ patch -Np1 -i ${srcdir}/cups-avahi-2-backend.patch
+ patch -Np1 -i ${srcdir}/cups-avahi-3-timeouts.patch
+ patch -Np1 -i ${srcdir}/cups-avahi-4-poll.patch
+ patch -Np1 -i ${srcdir}/cups-avahi-5-services.patch
+
+ # add systemd socket support - Fedora patch, also used in Gentoo
+ patch -Np1 -i ${srcdir}/cups-systemd-socket.patch
+
+ # Do not export SSL libs in cups-config
+ patch -Np1 -i "${srcdir}/cups-no-export-ssllibs.patch"
+
+ patch -Np1 -i "${srcdir}/cups-no-gcrypt.patch"
+ # don't zip man pages in make install, let makepkg do that / Fedora
+ patch -Np1 -i ${srcdir}/cups-no-gzip-man.patch
# Rebuild configure script for --enable-avahi.
aclocal -I config-scripts
autoconf -I config-scripts
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
- --with-logdir=/var/log/cups -with-docdir=/usr/share/cups/doc \
- --with-cups-user=daemon --with-cups-group=lp --enable-pam=yes \
- --disable-ldap --libdir=/usr/lib --enable-raw-printing \
- --enable-dbus --with-dbusdir=/etc/dbus-1 --enable-ssl=yes --enable-gnutls --disable-threads --enable-avahi\
- --with-php=/usr/bin/php-cgi --with-pdftops=pdftops --with-optim="$CFLAGS"
- make || return 1
+ --libdir=/usr/lib \
+ --with-systemdsystemunitdir=/usr/lib/systemd/system \
+ --with-logdir=/var/log/cups \
+ --with-docdir=/usr/share/cups/doc \
+ --with-cups-user=daemon \
+ --with-cups-group=lp \
+ --enable-pam=yes \
+ --disable-ldap \
+ --enable-raw-printing \
+ --enable-dbus --with-dbusdir=/etc/dbus-1 \
+ --enable-ssl=yes --enable-gnutls \
+ --enable-threads \
+ --enable-avahi\
+ --with-php=/usr/bin/php-cgi \
+ --with-pdftops=pdftops \
+ --with-optim="$CFLAGS"
+ make
+}
+
+check() {
+ cd "$srcdir/$pkgbase-$pkgver"
+ #httpAddrGetList(workstation64): FAIL
+ #1 TESTS FAILED!
+ #make[1]: *** [testhttp] Error 1
+ make -k check || /bin/true
}
package_libcups() {
pkgdesc="The CUPS Printing System - client libraries and headers"
-depends=('gnutls>=2.8.3' 'libtiff>=3.9.2-2' 'libpng>=1.4.0' 'heimdal>=1.3.1' 'avahi')
+depends=('gnutls>=2.8.3' 'libtiff>=4.0.0' 'libpng>=1.5.7' 'krb5' 'avahi')
+backup=(etc/cups/client.conf)
cd ${srcdir}/${pkgbase}-${pkgver}
- make BUILDROOT=${pkgdir} install-headers install-libs || return 1
+ make BUILDROOT=${pkgdir} install-headers install-libs
# put this into the libs pkg to make other software find the libs(no pkg-config file included)
- mkdir -p ${pkgdir}/usr/bin
+ mkdir -p ${pkgdir}/usr/bin
install -m755 ${srcdir}/${pkgbase}-${pkgver}/cups-config ${pkgdir}/usr/bin/cups-config
+
+ # install client.conf man page and config file
+ install -dm755 ${pkgdir}/usr/share/man/man5
+ #install -Dm644 ${srcdir}/${pkgbase}-${pkgver}/man/client.conf.5.gz ${pkgdir}/usr/share/man/man5/
+ install -Dm644 ${srcdir}/${pkgbase}-${pkgver}/man/client.conf.5 ${pkgdir}/usr/share/man/man5/
+ install -dm755 ${pkgdir}/etc/cups
+ touch ${pkgdir}/etc/cups/client.conf
+ echo "# see 'man client.conf'" >> ${pkgdir}/etc/cups/client.conf
+ echo "ServerName /var/run/cups/cups.sock # alternative: ServerName hostname-or-ip-address[:port] of a remote server" >> ${pkgdir}/etc/cups/client.conf
+ chgrp lp ${pkgdir}/etc/cups/client.conf
}
package_cups() {
-pkgdesc="The CUPS Printing System - deamon package"
+pkgdesc="The CUPS Printing System - daemon package"
install=cups.install
backup=(etc/cups/cupsd.conf
- etc/cups/mime.convs
- etc/cups/mime.types
etc/cups/snmp.conf
etc/cups/printers.conf
etc/cups/classes.conf
- etc/cups/client.conf
etc/cups/subscriptions.conf
etc/dbus-1/system.d/cups.conf
etc/logrotate.d/cups
etc/pam.d/cups
etc/xinetd.d/cups-lpd)
-depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'xdg-utils' 'poppler>=0.12.3' 'libusb' 'dbus-core' 'hicolor-icon-theme')
-optdepends=('php: for included phpcups.so module')
+depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'libusb' 'dbus-core' 'libsystemd' 'hicolor-icon-theme')
+optdepends=('php: for included phpcups.so module'
+ 'xdg-utils: xdg .desktop file support')
cd ${srcdir}/${pkgbase}-${pkgver}
- make BUILDROOT=${pkgdir} install-data install-exec || return 1
+ make BUILDROOT=${pkgdir} install-data install-exec
# this one we ship in the libcups pkg
rm -f ${pkgdir}/usr/bin/cups-config
@@ -76,7 +135,7 @@ optdepends=('php: for included phpcups.so module')
# kill the sysv stuff
rm -rf ${pkgdir}/etc/rc*.d
rm -rf ${pkgdir}/etc/init.d
- install -D -m755 ../cups ${pkgdir}/etc/rc.d/cups
+ install -D -m755 ../cups ${pkgdir}/etc/rc.d/cupsd
install -D -m644 ../cups.logrotate ${pkgdir}/etc/logrotate.d/cups
install -D -m644 ../cups.pam ${pkgdir}/etc/pam.d/cups
@@ -84,25 +143,32 @@ optdepends=('php: for included phpcups.so module')
chmod 755 ${pkgdir}/var/spool
chmod 755 ${pkgdir}/etc
- # serial backend needs to run as root (http://bugs.archlinux.org/task/20396)
- chmod 700 ${pkgdir}/usr/lib/cups/backend/serial
-
# install ssl directory where to store the certs, solves some samba issues
install -dm700 -g lp ${pkgdir}/etc/cups/ssl
- install -dm511 -g lp ${pkgdir}/var/run/cups/certs
+ # remove directory from package, we create it in cups rc.d file
+ rm -rf ${pkgdir}/var/run
# install some more configuration files that will get filled by cupsd
touch ${pkgdir}/etc/cups/printers.conf
touch ${pkgdir}/etc/cups/classes.conf
- touch ${pkgdir}/etc/cups/client.conf
- echo "# see 'man client.conf'" >> ${pkgdir}/etc/cups/client.conf
- echo "ServerName /var/run/cups/cups.sock # alternative: ServerName hostname-or-ip-address[:port] of a remote server" >> ${pkgdir}/etc/cups/client.conf
touch ${pkgdir}/etc/cups/subscriptions.conf
- chgrp lp ${pkgdir}/etc/cups/{printers.conf,classes.conf,client.conf,subscriptions.conf}
+ chgrp lp ${pkgdir}/etc/cups/{printers.conf,classes.conf,subscriptions.conf}
# fix .desktop file
sed -i 's|^Exec=htmlview http://localhost:631/|Exec=xdg-open http://localhost:631/|g' ${pkgdir}/usr/share/applications/cups.desktop
# compress some driver files, adopted from Fedora
find ${pkgdir}/usr/share/cups/model -name "*.ppd" | xargs gzip -n9f
+
+ # remove client.conf man page
+ rm -f ${pkgdir}/usr/share/man/man5/client.conf.5
+
+ # remove files now part of cups-filters - check cups-filters INSTALL for packagers instructions
+ rm -v ${pkgdir}/usr/lib/cups/backend/{parallel,serial}
+ rm -v ${pkgdir}/usr/lib/cups/filter/{bannertops,commandtoescpx,commandtopclx,imagetops,imagetoraster,pdftops,rastertoescpx,rastertopclx,texttops}
+ rm -v ${pkgdir}/usr/share/cups/banners/*
+ rm -v ${pkgdir}/usr/share/cups/data/{testprint,psglyphs}
+ rm -v ${pkgdir}/usr/share/cups/fonts/*
+ # comment out all conversion rules which use any of the removed filters
+ perl -p -i -e 's:^(.*\s+(pdftops|texttops|imagetops|bannertops|imagetoraster)\s*)$:#\1:' ${pkgdir}/usr/share/cups/mime/mime.convs
}
diff --git a/abs/extra/cups/PKGBUILD.16 b/abs/extra/cups/PKGBUILD.16
new file mode 100644
index 0000000..01faba0
--- /dev/null
+++ b/abs/extra/cups/PKGBUILD.16
@@ -0,0 +1,146 @@
+# $Id: PKGBUILD 159509 2012-05-25 16:34:34Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgbase="cups"
+pkgname=('libcups' 'cups')
+pkgver=1.6b1
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.cups.org/"
+makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'openslp' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'cups-filters' 'bc' 'colord'
+ 'xinetd' 'gzip' 'autoconf' 'libusb' 'dbus-core' 'avahi' 'hicolor-icon-theme')
+source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2
+ cups-no-export-ssllibs.patch
+ cups-no-gcrypt.patch
+ cups-no-gzip-man.patch
+ cups cups.logrotate cups.pam)
+#options=('!emptydirs')
+md5sums=('468a40755a872d84be89111ce97a69d1'
+ '9b8467a1e51d360096b70e2c3c081e6c'
+ '3733c23e77eb503bd94cc368e02830dc'
+ '90c30380d4c8cd48a908cfdadae1ea24'
+ '9657daa21760bb0b5fa3d8b51d5e01a1'
+ 'f861b18f4446c43918c8643dcbbd7f6d'
+ '96f82c38f3f540b53f3e5144900acf17')
+
+build() {
+ cd ${srcdir}/${pkgbase}-${pkgver}
+
+ # Do not export SSL libs in cups-config
+ patch -Np1 -i "${srcdir}/cups-no-export-ssllibs.patch"
+
+ patch -Np1 -i "${srcdir}/cups-no-gcrypt.patch"
+ # don't zip man pages in make install, let makepkg do that / Fedora
+ patch -Np1 -i ${srcdir}/cups-no-gzip-man.patch
+
+ # Rebuild configure script for not zipping man-pages.
+ aclocal -I config-scripts
+ autoconf -I config-scripts
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libdir=/usr/lib \
+ --with-logdir=/var/log/cups \
+ --with-docdir=/usr/share/cups/doc \
+ --with-cups-user=daemon \
+ --with-cups-group=lp \
+ --enable-pam=yes \
+ --enable-raw-printing \
+ --enable-dbus --with-dbusdir=/etc/dbus-1 \
+ --enable-ssl=yes --enable-gnutls \
+ --enable-threads \
+ --enable-avahi\
+ --with-php=/usr/bin/php-cgi \
+ --with-optim="$CFLAGS"
+ make
+}
+
+check() {
+ cd "$srcdir/$pkgbase-$pkgver"
+ #httpAddrGetList(workstation64): FAIL
+ #1 TESTS FAILED!
+ #make[1]: *** [testhttp] Error 1
+ make -k check || /bin/true
+}
+
+package_libcups() {
+pkgdesc="The CUPS Printing System - client libraries and headers"
+depends=('gnutls>=2.8.3' 'libtiff>=4.0.0' 'libpng>=1.5.7' 'krb5' 'avahi')
+backup=(etc/cups/client.conf)
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ make BUILDROOT=${pkgdir} install-headers install-libs
+ # put this into the libs pkg to make other software find the libs(no pkg-config file included)
+ mkdir -p ${pkgdir}/usr/bin
+ install -m755 ${srcdir}/${pkgbase}-${pkgver}/cups-config ${pkgdir}/usr/bin/cups-config
+
+ # install client.conf man page and config file
+ install -dm755 ${pkgdir}/usr/share/man/man5
+ #install -Dm644 ${srcdir}/${pkgbase}-${pkgver}/man/client.conf.5.gz ${pkgdir}/usr/share/man/man5/
+ install -Dm644 ${srcdir}/${pkgbase}-${pkgver}/man/client.conf.5 ${pkgdir}/usr/share/man/man5/
+ install -dm755 ${pkgdir}/etc/cups
+ touch ${pkgdir}/etc/cups/client.conf
+ echo "# see 'man client.conf'" >> ${pkgdir}/etc/cups/client.conf
+ echo "ServerName /var/run/cups/cups.sock # alternative: ServerName hostname-or-ip-address[:port] of a remote server" >> ${pkgdir}/etc/cups/client.conf
+ chgrp lp ${pkgdir}/etc/cups/client.conf
+}
+
+package_cups() {
+pkgdesc="The CUPS Printing System - daemon package"
+install=cups.install
+backup=(etc/cups/cupsd.conf
+ etc/cups/snmp.conf
+ etc/cups/printers.conf
+ etc/cups/classes.conf
+ etc/cups/subscriptions.conf
+ etc/dbus-1/system.d/cups.conf
+ etc/logrotate.d/cups
+ etc/pam.d/cups
+ etc/xinetd.d/cups-lpd)
+depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'libusb' 'dbus-core' 'hicolor-icon-theme')
+optdepends=('xdg-utils: xdg .desktop file support')
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ make BUILDROOT=${pkgdir} install-data install-exec
+
+ # this one we ship in the libcups pkg
+ rm -f ${pkgdir}/usr/bin/cups-config
+
+ # kill the sysv stuff
+ rm -rf ${pkgdir}/etc/rc*.d
+ rm -rf ${pkgdir}/etc/init.d
+ install -D -m755 ../cups ${pkgdir}/etc/rc.d/cupsd
+ install -D -m644 ../cups.logrotate ${pkgdir}/etc/logrotate.d/cups
+ install -D -m644 ../cups.pam ${pkgdir}/etc/pam.d/cups
+
+ # fix perms on /var/spool and /etc
+ chmod 755 ${pkgdir}/var/spool
+ chmod 755 ${pkgdir}/etc
+
+ # install ssl directory where to store the certs, solves some samba issues
+ install -dm700 -g lp ${pkgdir}/etc/cups/ssl
+ # remove directory from package, we create it in cups rc.d file
+ rm -rf ${pkgdir}/var/run
+
+ # install some more configuration files that will get filled by cupsd
+ touch ${pkgdir}/etc/cups/printers.conf
+ touch ${pkgdir}/etc/cups/classes.conf
+ touch ${pkgdir}/etc/cups/subscriptions.conf
+ chgrp lp ${pkgdir}/etc/cups/{printers.conf,classes.conf,subscriptions.conf}
+
+ # fix .desktop file
+ sed -i 's|^Exec=htmlview http://localhost:631/|Exec=xdg-open http://localhost:631/|g' ${pkgdir}/usr/share/applications/cups.desktop
+
+ # compress some driver files, adopted from Fedora
+ find ${pkgdir}/usr/share/cups/model -name "*.ppd" | xargs gzip -n9f
+
+ # remove client.conf man page
+ rm -f ${pkgdir}/usr/share/man/man5/client.conf.5
+
+ # remove files now part of cups-filters
+ rm -v ${pkgdir}/usr/lib/cups/filter/bannertops
+ rm -v ${pkgdir}/usr/share/cups/banners/*
+ rm -v ${pkgdir}/usr/share/cups/data/testprint
+ # comment out all conversion rules which use any of the removed filters
+ perl -p -i -e 's:^(.*\s+bannertops\s*)$:#\1:' /usr/share/cups/mime/mime.convs
+}
diff --git a/abs/extra/cups/cups b/abs/extra/cups/cups
index 4afaf5a..744c8e6 100755
--- a/abs/extra/cups/cups
+++ b/abs/extra/cups/cups
@@ -1,38 +1,68 @@
#!/bin/bash
+daemon_name=cupsd
+
. /etc/rc.conf
. /etc/rc.d/functions
+#. /etc/conf.d/$daemon_name.conf
+
+get_pid() {
+ pidof -o %PPID $daemon_name
+}
-PID=`pidof -o %PPID /usr/sbin/cupsd`
case "$1" in
start)
- stat_busy "Starting CUPS Daemon"
- [ -z "$PID" ] && /usr/sbin/cupsd
- if [ $? -gt 0 ]; then
- stat_fail
+ stat_busy "Starting $daemon_name daemon"
+
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ [ -f /var/run/$daemon_name.pid ] && rm -f /var/run/$daemon_name.pid
+ # RUN
+ $daemon_name
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(get_pid) > /var/run/$daemon_name.pid
+ add_daemon $daemon_name
+ stat_done
+ fi
else
- echo $(pidof -o %PPID -x /usr/sbin/cupsd) > /var/run/cups.pid
- add_daemon cups
- stat_done
+ stat_fail
+ exit 1
fi
;;
+
stop)
- stat_busy "Stopping CUPS Daemon"
- [ ! -z "$PID" ] && kill $PID &> /dev/null
+ stat_busy "Stopping $daemon_name daemon"
+ PID=$(get_pid)
+ # KILL
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ #
if [ $? -gt 0 ]; then
stat_fail
+ exit 1
else
- rm /var/run/cups.pid
- rm_daemon cups
+ rm -f /var/run/$daemon_name.pid &> /dev/null
+ rm_daemon $daemon_name
stat_done
fi
;;
+
restart)
$0 stop
- sleep 1
+ sleep 3
$0 start
;;
+
+ status)
+ stat_busy "Checking $daemon_name status";
+ ck_status $daemon_name
+ ;;
+
*)
- echo "usage: $0 {start|stop|restart}"
+ echo "usage: $0 {start|stop|restart|status}"
esac
+
exit 0
diff --git a/abs/extra/cups/cups-1.3.7-peercred.patch b/abs/extra/cups/cups-1.3.7-peercred.patch
deleted file mode 100644
index eda2c93..0000000
--- a/abs/extra/cups/cups-1.3.7-peercred.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur cups-1.3.7/scheduler/auth.c cups-1.3.7.new/scheduler/auth.c
---- cups-1.3.7/scheduler/auth.c 2008-03-20 21:58:16.000000000 +0100
-+++ cups-1.3.7.new/scheduler/auth.c 2008-06-09 14:53:45.535194741 +0200
-@@ -54,6 +54,7 @@
- * Include necessary headers...
- */
-
-+#define _GNU_SOURCE
- #include "cupsd.h"
- #include <grp.h>
- #ifdef HAVE_SHADOW_H
diff --git a/abs/extra/cups/cups-avahi-1-config.patch b/abs/extra/cups/cups-avahi-1-config.patch
new file mode 100644
index 0000000..304cd26
--- /dev/null
+++ b/abs/extra/cups/cups-avahi-1-config.patch
@@ -0,0 +1,42 @@
+diff -up cups-1.5.2/config.h.in.avahi-1-config cups-1.5.2/config.h.in
+--- cups-1.5.2/config.h.in.avahi-1-config 2011-06-16 21:12:16.000000000 +0100
++++ cups-1.5.2/config.h.in 2012-03-14 15:04:51.365347165 +0000
+@@ -390,6 +390,13 @@
+
+
+ /*
++ * Do we have Avahi for DNS Service Discovery?
++ */
++
++#undef HAVE_AVAHI
++
++
++/*
+ * Do we have <sys/ioctl.h>?
+ */
+
+diff -up cups-1.5.2/config-scripts/cups-dnssd.m4.avahi-1-config cups-1.5.2/config-scripts/cups-dnssd.m4
+--- cups-1.5.2/config-scripts/cups-dnssd.m4.avahi-1-config 2011-05-12 06:21:56.000000000 +0100
++++ cups-1.5.2/config-scripts/cups-dnssd.m4 2012-03-14 15:04:51.365347165 +0000
+@@ -23,6 +23,21 @@ AC_ARG_WITH(dnssd-includes, [ --with-dn
+ DNSSDLIBS=""
+ DNSSD_BACKEND=""
+
++AC_ARG_ENABLE(avahi, [ --enable-avahi turn on DNS Service Discovery support, default=no],
++ [if test x$enable_avahi = xyes; then
++ AC_MSG_CHECKING(for Avahi)
++ if $PKGCONFIG --exists avahi-client; then
++ AC_MSG_RESULT(yes)
++ CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
++ DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
++ DNSSD_BACKEND="dnssd"
++ AC_DEFINE(HAVE_AVAHI)
++ enable_dnssd=no
++ else
++ AC_MSG_RESULT(no)
++ fi
++ fi])
++
+ if test x$enable_dnssd != xno; then
+ AC_CHECK_HEADER(dns_sd.h, [
+ case "$uname" in \ No newline at end of file
diff --git a/abs/extra/cups/cups-avahi.patch b/abs/extra/cups/cups-avahi-2-backend.patch
index cf1056a..00e12a0 100644
--- a/abs/extra/cups/cups-avahi.patch
+++ b/abs/extra/cups/cups-avahi-2-backend.patch
@@ -1,15 +1,29 @@
-diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
---- cups-1.4.5/backend/dnssd.c.avahi 2009-08-08 00:27:12.000000000 +0200
-+++ cups-1.4.5/backend/dnssd.c 2010-11-12 13:13:31.000000000 +0100
-@@ -22,6 +22,7 @@
+diff -up cups-1.5.3/backend/dnssd.c.avahi-2-backend cups-1.5.3/backend/dnssd.c
+--- cups-1.5.3/backend/dnssd.c.avahi-2-backend 2012-05-15 16:53:18.164774446 +0200
++++ cups-1.5.3/backend/dnssd.c 2012-05-15 17:09:07.684155704 +0200
+@@ -15,14 +15,21 @@
+ *
+ * Contents:
+ *
++ * next_txt_record() - Get next TXT record from a cups_txt_records_t.
++ * parse_txt_record_pair() - Read key/value pair in cups_txt_records_t.
+ * main() - Browse for printers.
+ * browse_callback() - Browse devices.
+ * browse_local_callback() - Browse local devices.
+ * compare_devices() - Compare two devices.
* exec_backend() - Execute the backend that corresponds to the
* resolved service name.
++ * device_type() - Get DNS-SD type enumeration from string.
* get_device() - Create or update a device.
-+* find_device()
* query_callback() - Process query data.
++ * avahi_client_callback() - Avahi client callback function.
++ * avahi_query_callback() - Avahi query callback function.
++ * avahi_browse_callback() - Avahi browse callback function.
++ * find_device() - Find a device from its name and domain.
* sigterm_handler() - Handle termination signals...
* unquote() - Unquote a name string.
-@@ -33,7 +34,18 @@
+ */
+@@ -33,7 +40,18 @@
#include "backend-private.h"
#include <cups/array.h>
@@ -29,7 +43,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
/*
-@@ -52,7 +64,12 @@ typedef enum
+@@ -53,7 +71,12 @@ typedef enum
typedef struct
{
@@ -42,7 +56,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
char *name, /* Service name */
*domain, /* Domain name */
*fullName, /* Full name */
-@@ -64,6 +81,20 @@ typedef struct
+@@ -65,6 +88,20 @@ typedef struct
sent; /* Did we list the device? */
} cups_device_t;
@@ -63,7 +77,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
/*
* Local globals...
-@@ -77,6 +108,7 @@ static int job_canceled = 0;
+@@ -78,6 +115,7 @@ static int job_canceled = 0;
* Local functions...
*/
@@ -71,23 +85,24 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
static void browse_callback(DNSServiceRef sdRef,
DNSServiceFlags flags,
uint32_t interfaceIndex,
-@@ -92,12 +124,6 @@ static void browse_local_callback(DNSSe
- const char *regtype,
+@@ -95,13 +133,6 @@ static void browse_local_callback(DNSSe
const char *replyDomain,
- void *context);
+ void *context)
+ __attribute__((nonnull(1,5,6,7,8)));
-static int compare_devices(cups_device_t *a, cups_device_t *b);
-static void exec_backend(char **argv);
-static cups_device_t *get_device(cups_array_t *devices,
- const char *serviceName,
- const char *regtype,
-- const char *replyDomain);
+- const char *replyDomain)
+- __attribute__((nonnull(1,2,3,4)));
static void query_callback(DNSServiceRef sdRef,
DNSServiceFlags flags,
uint32_t interfaceIndex,
-@@ -106,9 +132,111 @@ static void query_callback(DNSServiceRe
- uint16_t rrclass, uint16_t rdlen,
+@@ -111,10 +142,119 @@ static void query_callback(DNSServiceRe
const void *rdata, uint32_t ttl,
- void *context);
+ void *context)
+ __attribute__((nonnull(1,5,9,11)));
+#endif /* HAVE_DNSSD */
+#ifdef HAVE_AVAHI
+static void avahi_client_callback (AvahiClient *client,
@@ -103,7 +118,6 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ AvahiLookupResultFlags flags,
+ void *context);
+#endif /* HAVE_AVAHI */
-+
+static cups_device_t * find_device (cups_array_t *devices,
+ cups_txt_records_t *txt,
+ cups_device_t *dkey);
@@ -112,9 +126,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+static cups_device_t *get_device(cups_array_t *devices,
+ const char *serviceName,
+ const char *regtype,
-+ const char *replyDomain);
++ const char *replyDomain)
++ __attribute__((nonnull(1,2,3,4)));
static void sigterm_handler(int sig);
- static void unquote(char *dst, const char *src, size_t dstsize);
+ static void unquote(char *dst, const char *src, size_t dstsize)
+ __attribute__((nonnull(1,2)));
+#ifdef HAVE_AVAHI
+static AvahiSimplePoll *simple_poll = NULL;
@@ -123,8 +139,9 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+
+
+/*
-+ * cups_txt_records_t access functions
++ * 'next_txt_record()' - Get next TXT record from a cups_txt_records_t.
+ */
++
+static cups_txt_records_t *
+next_txt_record (cups_txt_records_t *txt)
+{
@@ -139,6 +156,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ return txt;
+}
+
++
++/*
++ * 'parse_txt_record_pair()' - Read key/value pair in cups_txt_records_t.
++ */
++
+static int
+parse_txt_record_pair (cups_txt_records_t *txt)
+{
@@ -154,7 +176,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ */
+
+ datalen = *data++;
-+ if (!datalen || (data + datalen) >= txt->dataend)
++ if (!datalen || (data + datalen) > txt->dataend)
+ return NULL;
+ txt->datanext = data + datalen;
+
@@ -193,10 +215,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+
+ return 0;
+}
++
/*
* 'main()' - Browse for printers.
-@@ -119,6 +247,13 @@ main(int argc, /* I - Number of comm
+@@ -125,6 +265,13 @@ main(int argc, /* I - Number of comm
char *argv[]) /* I - Command-line arguments */
{
const char *name; /* Backend name */
@@ -210,7 +233,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
DNSServiceRef main_ref, /* Main service reference */
fax_ipp_ref, /* IPP fax service reference */
ipp_ref, /* IPP service reference */
-@@ -130,12 +265,11 @@ main(int argc, /* I - Number of comm
+@@ -138,12 +285,11 @@ main(int argc, /* I - Number of comm
pdl_datastream_ref, /* AppSocket service reference */
printer_ref, /* LPD service reference */
riousbprint_ref; /* Remote IO service reference */
@@ -228,7 +251,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
struct sigaction action; /* Actions for POSIX signals */
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
-@@ -194,6 +328,49 @@ main(int argc, /* I - Number of comm
+@@ -203,6 +349,49 @@ main(int argc, /* I - Number of comm
* Browse for different kinds of printers...
*/
@@ -243,8 +266,8 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ 0, avahi_client_callback, NULL, &error);
+ if (!client)
+ {
-+ perror ("ERROR: Unable to create avahi client");
-+ return (1);
++ perror ("DEBUG: Unable to create avahi client");
++ return (0);
+ }
+
+ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
@@ -278,7 +301,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
if (DNSServiceCreateConnection(&main_ref) != kDNSServiceErr_NoError)
{
perror("ERROR: Unable to create service connection");
-@@ -245,6 +422,7 @@ main(int argc, /* I - Number of comm
+@@ -263,6 +452,7 @@ main(int argc, /* I - Number of comm
riousbprint_ref = main_ref;
DNSServiceBrowse(&riousbprint_ref, kDNSServiceFlagsShareConnection, 0,
"_riousbprint._tcp", NULL, browse_callback, devices);
@@ -286,7 +309,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
/*
* Loop until we are killed...
-@@ -252,6 +430,9 @@ main(int argc, /* I - Number of comm
+@@ -270,6 +460,9 @@ main(int argc, /* I - Number of comm
while (!job_canceled)
{
@@ -296,7 +319,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
FD_ZERO(&input);
FD_SET(fd, &input);
-@@ -271,11 +452,35 @@ main(int argc, /* I - Number of comm
+@@ -289,11 +482,35 @@ main(int argc, /* I - Number of comm
}
else
{
@@ -332,15 +355,15 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
cups_device_t *best; /* Best matching device */
char device_uri[1024]; /* Device URI */
int count; /* Number of queries */
-@@ -285,6 +490,7 @@ main(int argc, /* I - Number of comm
- best = NULL, count = 0;
- device;
- device = (cups_device_t *)cupsArrayNext(devices))
+@@ -307,6 +524,7 @@ main(int argc, /* I - Number of comm
+ if (device->sent)
+ sent ++;
+
+#ifdef HAVE_DNSSD
- if (!device->ref && !device->sent)
- {
- /*
-@@ -313,14 +519,23 @@ main(int argc, /* I - Number of comm
+ if (device->ref)
+ count ++;
+
+@@ -338,14 +556,23 @@ main(int argc, /* I - Number of comm
count ++;
}
}
@@ -365,30 +388,15 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
if (!best)
best = device;
-@@ -372,6 +587,7 @@ main(int argc, /* I - Number of comm
- * 'browse_callback()' - Browse devices.
- */
-
-+#ifdef HAVE_DNSSD
- static void
- browse_callback(
- DNSServiceRef sdRef, /* I - Service reference */
-@@ -405,12 +621,14 @@ browse_callback(
-
- get_device((cups_array_t *)context, serviceName, regtype, replyDomain);
+@@ -406,6 +633,7 @@ main(int argc, /* I - Number of comm
}
-+#endif /* HAVE_DNSSD */
++#ifdef HAVE_DNSSD
/*
- * 'browse_local_callback()' - Browse local devices.
+ * 'browse_callback()' - Browse devices.
*/
-
-+#ifdef HAVE_DNSSD
- static void
- browse_local_callback(
- DNSServiceRef sdRef, /* I - Service reference */
-@@ -456,6 +674,7 @@ browse_local_callback(
+@@ -494,6 +722,7 @@ browse_local_callback(
device->fullName);
device->sent = 1;
}
@@ -396,25 +404,32 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
/*
-@@ -528,6 +747,32 @@ exec_backend(char **argv) /* I - Comman
- exit(CUPS_BACKEND_STOP);
- }
+@@ -574,6 +803,41 @@ exec_backend(char **argv) /* I - Comman
+
+ /*
++ * 'device_type()' - Get DNS-SD type enumeration from string.
++ */
++
+static int
+device_type (const char *regtype)
+{
+#ifdef HAVE_AVAHI
-+ if (!strcmp(regtype, "_ipp._tcp") ||
-+ !strcmp(regtype, "_ipp-tls._tcp"))
++ if (!strcmp(regtype, "_ipp._tcp"))
+ return (CUPS_DEVICE_IPP);
++ else if (!strcmp(regtype, "_ipps._tcp") ||
++ !strcmp(regtype, "_ipp-tls._tcp"))
++ return (CUPS_DEVICE_IPPS);
+ else if (!strcmp(regtype, "_fax-ipp._tcp"))
+ return (CUPS_DEVICE_FAX_IPP);
+ else if (!strcmp(regtype, "_printer._tcp"))
+ return (CUPS_DEVICE_PDL_DATASTREAM);
+#else
-+ if (!strcmp(regtype, "_ipp._tcp.") ||
-+ !strcmp(regtype, "_ipp-tls._tcp."))
++ if (!strcmp(regtype, "_ipp._tcp."))
+ return (CUPS_DEVICE_IPP);
++ else if (!strcmp(regtype, "_ipps._tcp.") ||
++ !strcmp(regtype, "_ipp-tls._tcp."))
++ return (CUPS_DEVICE_IPPS);
+ else if (!strcmp(regtype, "_fax-ipp._tcp."))
+ return (CUPS_DEVICE_FAX_IPP);
+ else if (!strcmp(regtype, "_printer._tcp."))
@@ -426,17 +441,21 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ return (CUPS_DEVICE_RIOUSBPRINT);
+}
+
-
- /*
++
++/*
* 'get_device()' - Create or update a device.
-@@ -550,18 +795,7 @@ get_device(cups_array_t *devices, /* I -
+ */
+
+@@ -594,20 +858,7 @@ get_device(cups_array_t *devices, /* I -
*/
key.name = (char *)serviceName;
-
-- if (!strcmp(regtype, "_ipp._tcp.") ||
-- !strcmp(regtype, "_ipp-tls._tcp."))
+- if (!strcmp(regtype, "_ipp._tcp."))
- key.type = CUPS_DEVICE_IPP;
+- else if (!strcmp(regtype, "_ipps._tcp.") ||
+- !strcmp(regtype, "_ipp-tls._tcp."))
+- key.type = CUPS_DEVICE_IPPS;
- else if (!strcmp(regtype, "_fax-ipp._tcp."))
- key.type = CUPS_DEVICE_FAX_IPP;
- else if (!strcmp(regtype, "_printer._tcp."))
@@ -449,7 +468,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
for (device = cupsArrayFind(devices, &key);
device;
-@@ -581,8 +815,14 @@ get_device(cups_array_t *devices, /* I -
+@@ -627,8 +878,14 @@ get_device(cups_array_t *devices, /* I -
free(device->domain);
device->domain = strdup(replyDomain);
@@ -464,7 +483,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
free(device->fullName);
device->fullName = strdup(fullName);
}
-@@ -602,6 +842,9 @@ get_device(cups_array_t *devices, /* I -
+@@ -648,6 +905,9 @@ get_device(cups_array_t *devices, /* I -
device->domain = strdup(replyDomain);
device->type = key.type;
device->priority = 50;
@@ -474,7 +493,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
cupsArrayAdd(devices, device);
-@@ -609,7 +852,13 @@ get_device(cups_array_t *devices, /* I -
+@@ -655,13 +915,20 @@ get_device(cups_array_t *devices, /* I -
* Set the "full name" of this service, which is used for queries...
*/
@@ -488,15 +507,14 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
device->fullName = strdup(fullName);
return (device);
-@@ -620,6 +869,7 @@ get_device(cups_array_t *devices, /* I -
- * 'query_callback()' - Process query data.
- */
+ }
+
+#ifdef HAVE_DNSSD
- static void
- query_callback(
- DNSServiceRef sdRef, /* I - Service reference */
-@@ -639,7 +889,7 @@ query_callback(
+ /*
+ * 'query_callback()' - Process query data.
+ */
+@@ -685,7 +952,7 @@ query_callback(
*ptr; /* Pointer into string */
cups_device_t dkey, /* Search key */
*device; /* Device */
@@ -505,13 +523,15 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
fprintf(stderr, "DEBUG2: query_callback(sdRef=%p, flags=%x, "
"interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
-@@ -673,84 +923,212 @@ query_callback(
+@@ -719,94 +986,233 @@ query_callback(
if ((ptr = strstr(name, "._")) != NULL)
*ptr = '\0';
-- if (strstr(fullName, "_ipp._tcp.") ||
-- strstr(fullName, "_ipp-tls._tcp."))
+- if (strstr(fullName, "_ipp._tcp."))
- dkey.type = CUPS_DEVICE_IPP;
+- else if (strstr(fullName, "_ipps._tcp.") ||
+- strstr(fullName, "_ipp-tls._tcp."))
+- dkey.type = CUPS_DEVICE_IPPS;
- else if (strstr(fullName, "_fax-ipp._tcp."))
- dkey.type = CUPS_DEVICE_FAX_IPP;
- else if (strstr(fullName, "_printer._tcp."))
@@ -528,7 +548,12 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+}
+#endif /* HAVE_DNSSD */
+
++
+#ifdef HAVE_AVAHI
++/*
++ * 'avahi_client_callback()' - Avahi client callback function.
++ */
++
+static void
+avahi_client_callback(AvahiClient *client,
+ AvahiClientState state,
@@ -545,6 +570,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ }
+}
+
++
++/*
++ * 'avahi_query_callback()' - Avahi query callback function.
++ */
++
+static void
+avahi_query_callback(AvahiServiceResolver *resolver,
+ AvahiIfIndex interface,
@@ -610,10 +640,16 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
else
- dkey.type = CUPS_DEVICE_RIOUSBPRINT;
+ fprintf (stderr, "DEBUG: Ignoring TXT record for \"%s\"...\n", name);
-+
+
+- for (device = cupsArrayFind(devices, &dkey);
+ avahi_service_resolver_free (resolver);
+}
+
++
++/*
++ * 'avahi_browse_callback()' - Avahi browse callback function.
++ */
++
+static void
+avahi_browse_callback(AvahiServiceBrowser *browser,
+ AvahiIfIndex interface,
@@ -671,16 +707,20 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
+ }
+
+ break;
-
-- for (device = cupsArrayFind(devices, &dkey);
++
+ case AVAHI_BROWSER_REMOVE:
+ case AVAHI_BROWSER_ALL_FOR_NOW:
+ case AVAHI_BROWSER_CACHE_EXHAUSTED:
+ break;
-+ }
++ }
+}
+#endif /* HAVE_AVAHI */
+
++
++/*
++ * 'find_device()' - Find a device from its name and domain.
++ */
++
+static cups_device_t *
+find_device (cups_array_t *devices,
+ cups_txt_records_t *txt,
@@ -693,10 +733,10 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
device;
device = cupsArrayNext(devices))
{
-- if (strcasecmp(device->name, dkey.name) ||
-- strcasecmp(device->domain, dkey.domain))
-+ if (strcasecmp(device->name, dkey->name) ||
-+ strcasecmp(device->domain, dkey->domain))
+- if (_cups_strcasecmp(device->name, dkey.name) ||
+- _cups_strcasecmp(device->domain, dkey.domain))
++ if (_cups_strcasecmp(device->name, dkey->name) ||
++ _cups_strcasecmp(device->domain, dkey->domain))
{
device = NULL;
break;
@@ -741,17 +781,17 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
-
- datalen = *data++;
-
-- if (!datalen || (data + datalen) >= dataend)
+- if (!datalen || (data + datalen) > dataend)
- break;
-
- datanext = data + datalen;
-+ char *key;
-+ char *value;
-
+-
- for (ptr = key; data < datanext && *data != '='; data ++)
- *ptr++ = *data;
- *ptr = '\0';
--
++ char *key;
++ char *value;
+
- if (data < datanext && *data == '=')
- {
- data ++;
@@ -759,18 +799,27 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
- if (data < datanext)
- memcpy(value, data, datanext - data);
- value[datanext - data] = '\0';
-- }
-- else
-- continue;
+ if (parse_txt_record_pair (txt))
+ goto next;
+- fprintf(stderr, "DEBUG2: query_callback: \"%s=%s\".\n",
+- key, value);
+- }
+- else
+- {
+- fprintf(stderr, "DEBUG2: query_callback: \"%s\" with no value.\n",
+- key);
+- continue;
+- }
+-
+- if (!_cups_strncasecmp(key, "usb_", 4))
+ key = txt->key;
+ value = txt->value;
- if (!strncasecmp(key, "usb_", 4))
++ if (!strncasecmp(key, "usb_", 4))
{
/*
-@@ -805,6 +1183,10 @@ query_callback(
+ * Add USB device ID information...
+@@ -861,6 +1267,10 @@ query_callback(
if (device->type == CUPS_DEVICE_PRINTER)
device->sent = 1;
}
@@ -781,7 +830,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
}
if (device->device_id)
-@@ -854,11 +1236,9 @@ query_callback(
+@@ -917,11 +1327,9 @@ query_callback(
}
}
@@ -794,54 +843,23 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
/*
* 'sigterm_handler()' - Handle termination signals...
*/
-diff -up cups-1.4.5/config.h.in.avahi cups-1.4.5/config.h.in
---- cups-1.4.5/config.h.in.avahi 2010-08-13 06:11:46.000000000 +0200
-+++ cups-1.4.5/config.h.in 2010-11-12 13:13:31.000000000 +0100
-@@ -344,6 +344,13 @@
-
-
- /*
-+ * Do we have Avahi for DNS Service Discovery?
-+ */
-+
-+#undef HAVE_AVAHI
-+
-+
-+/*
- * Do we have <sys/ioctl.h>?
+diff -up cups-1.5.3/cups/http-support.c.avahi-2-backend cups-1.5.3/cups/http-support.c
+--- cups-1.5.3/cups/http-support.c.avahi-2-backend 2012-02-15 02:06:12.000000000 +0100
++++ cups-1.5.3/cups/http-support.c 2012-05-15 17:04:51.045944634 +0200
+@@ -43,6 +43,10 @@
+ * http_copy_decode() - Copy and decode a URI.
+ * http_copy_encode() - Copy and encode a URI.
+ * http_resolve_cb() - Build a device URI for the given service name.
++ * avahi_resolve_uri_client_cb()
++ * - Avahi client callback for resolving URI.
++ * avahi_resolve_uri_resolver_cb()
++ * - Avahi resolver callback for resolving URI.
*/
-diff -up cups-1.4.5/config-scripts/cups-dnssd.m4.avahi cups-1.4.5/config-scripts/cups-dnssd.m4
---- cups-1.4.5/config-scripts/cups-dnssd.m4.avahi 2009-08-29 00:54:34.000000000 +0200
-+++ cups-1.4.5/config-scripts/cups-dnssd.m4 2010-11-12 13:13:31.000000000 +0100
-@@ -27,6 +27,21 @@ AC_ARG_WITH(dnssd-includes, [ --with-dn
- DNSSDLIBS=""
- DNSSD_BACKEND=""
-
-+AC_ARG_ENABLE(avahi, [ --enable-avahi turn on DNS Service Discovery support, default=no],
-+ [if test x$enable_avahi = xyes; then
-+ AC_MSG_CHECKING(for Avahi)
-+ if $PKGCONFIG --exists avahi-client; then
-+ AC_MSG_RESULT(yes)
-+ CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
-+ DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
-+ DNSSD_BACKEND="dnssd"
-+ AC_DEFINE(HAVE_AVAHI)
-+ enable_dnssd=no
-+ else
-+ AC_MSG_RESULT(no)
-+ fi
-+ fi])
-+
- if test x$enable_dnssd != xno; then
- AC_CHECK_HEADER(dns_sd.h, [
- case "$uname" in
-diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
---- cups-1.4.5/cups/http-support.c.avahi 2010-10-02 00:40:38.000000000 +0200
-+++ cups-1.4.5/cups/http-support.c 2010-11-12 13:28:45.000000000 +0100
-@@ -55,6 +55,11 @@
- # include <dns_sd.h>
- # include <poll.h>
+ /*
+@@ -60,6 +64,11 @@
+ # include <sys/select.h>
+ # endif /* WIN32 */
#endif /* HAVE_DNSSD */
+#ifdef HAVE_AVAHI
+# include <avahi-client/client.h>
@@ -851,8 +869,8 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
/*
-@@ -121,6 +126,24 @@ static void resolve_callback(DNSService
- void *context);
+@@ -127,6 +136,24 @@ static void DNSSD_API http_resolve_cb(DN
+ void *context);
#endif /* HAVE_DNSSD */
+#ifdef HAVE_AVAHI
@@ -876,7 +894,7 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
/*
* 'httpAssembleURI()' - Assemble a uniform resource identifier from its
-@@ -1351,16 +1374,27 @@ _httpResolveURI(
+@@ -1434,6 +1461,9 @@ _httpResolveURI(
if (strstr(hostname, "._tcp"))
{
@@ -884,15 +902,12 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
+ char *regtype, /* Pointer to type in hostname */
+ *domain; /* Pointer to domain in hostname */
#ifdef HAVE_DNSSD
- DNSServiceRef ref, /* DNS-SD master service reference */
- domainref, /* DNS-SD service reference for domain */
- localref; /* DNS-SD service reference for .local */
- int domainsent = 0, /* Send the domain resolve? */
- offline = 0; /* offline-report state set? */
-- char *regtype, /* Pointer to type in hostname */
-- *domain; /* Pointer to domain in hostname */
- _http_uribuf_t uribuf; /* URI buffer */
- struct pollfd polldata; /* Polling data */
+ # ifdef WIN32
+ # pragma comment(lib, "dnssd.lib")
+@@ -1452,6 +1482,17 @@ _httpResolveURI(
+ fd_set input_set; /* Input set for select() */
+ struct timeval stimeout; /* Timeout value for select() */
+ #endif /* HAVE_POLL */
+#else /* HAVE_AVAHI */
+ AvahiSimplePoll *simple_poll;
+ AvahiClient *client;
@@ -903,24 +918,28 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
+ _http_uribuf_t uribuf;
+ } user_data;
+#endif /* HAVE_DNSSD */
++
-
- if (logit)
-@@ -1398,8 +1432,13 @@ _httpResolveURI(
+ if (options & _HTTP_RESOLVE_STDERR)
+ fprintf(stderr, "DEBUG: Resolving \"%s\"...\n", hostname);
+@@ -1488,9 +1529,16 @@ _httpResolveURI(
if (domain)
*domain++ = '\0';
+#ifdef HAVE_DNSSD
- uribuf.buffer = resolved_uri;
- uribuf.bufsize = resolved_size;
+ uribuf.buffer = resolved_uri;
+ uribuf.bufsize = resolved_size;
+ uribuf.options = options;
+#else
+ user_data.uribuf.buffer = resolved_uri;
+ user_data.uribuf.bufsize = resolved_size;
++ user_data.uribuf.options = options;
+#endif
-
++
resolved_uri[0] = '\0';
-@@ -1414,6 +1453,7 @@ _httpResolveURI(
+ DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", "
+@@ -1504,6 +1552,7 @@ _httpResolveURI(
uri = NULL;
@@ -928,7 +947,7 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
{
localref = ref;
-@@ -1500,6 +1540,36 @@ _httpResolveURI(
+@@ -1611,6 +1660,36 @@ _httpResolveURI(
DNSServiceRefDeallocate(ref);
}
@@ -963,9 +982,9 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
+ }
+#endif /* HAVE_DNSSD */
- if (logit)
+ if (options & _HTTP_RESOLVE_STDERR)
{
-@@ -1511,13 +1581,13 @@ _httpResolveURI(
+@@ -1622,13 +1701,13 @@ _httpResolveURI(
fputs("STATE: -connecting-to-device,offline-report\n", stderr);
}
@@ -979,13 +998,17 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
-#endif /* HAVE_DNSSD */
+#endif /* HAVE_DNSSD || HAVE_AVAHI */
- if (logit && !uri)
- _cupsLangPuts(stderr, _("Unable to find printer!\n"));
-@@ -1722,6 +1792,105 @@ resolve_callback(
+ if ((options & _HTTP_RESOLVE_STDERR) && !uri)
+ _cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer."));
+@@ -1916,6 +1995,115 @@ http_resolve_cb(
}
#endif /* HAVE_DNSSD */
+#ifdef HAVE_AVAHI
++/*
++ * 'avahi_resolve_uri_client_cb()' - Avahi client callback for resolving URI.
++ */
++
+static void
+avahi_resolve_uri_client_cb (AvahiClient *client,
+ AvahiClientState state,
@@ -1002,6 +1025,12 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
+ avahi_simple_poll_quit (simple_poll);
+}
+
++
++/*
++ * 'avahi_resolve_uri_resolver_cb()' - Avahi resolver callback for resolving
++ * URI.
++ */
++
+static void
+avahi_resolve_uri_resolver_cb (AvahiServiceResolver *resolver,
+ AvahiIfIndex interface,
@@ -1086,4 +1115,4 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
+
/*
- * End of "$Id: http-support.c 9322 2010-10-01 22:40:38Z mike $".
+ * End of "$Id: http-support.c 10284 2012-02-15 01:06:12Z mike $". \ No newline at end of file
diff --git a/abs/extra/cups/cups-avahi-3-timeouts.patch b/abs/extra/cups/cups-avahi-3-timeouts.patch
new file mode 100644
index 0000000..daf852a
--- /dev/null
+++ b/abs/extra/cups/cups-avahi-3-timeouts.patch
@@ -0,0 +1,381 @@
+diff -up cups-1.5.2/scheduler/cupsd.h.avahi-3-timeouts cups-1.5.2/scheduler/cupsd.h
+--- cups-1.5.2/scheduler/cupsd.h.avahi-3-timeouts 2011-05-11 23:17:34.000000000 +0100
++++ cups-1.5.2/scheduler/cupsd.h 2012-03-14 15:06:36.509476983 +0000
+@@ -140,6 +140,15 @@ extern const char *cups_hstrerror(int);
+
+ typedef void (*cupsd_selfunc_t)(void *data);
+
++#ifdef HAVE_AVAHI
++/*
++ * Timeout callback function type...
++ */
++
++typedef struct _cupsd_timeout_s cupsd_timeout_t;
++typedef void (*cupsd_timeoutfunc_t)(cupsd_timeout_t *timeout, void *data);
++#endif /* HAVE_AVAHI */
++
+
+ /*
+ * Globals...
+@@ -173,6 +182,11 @@ VAR int Launchd VALUE(0);
+ /* Running from launchd */
+ #endif /* HAVE_LAUNCH_H */
+
++#ifdef HAVE_AVAHI
++VAR cups_array_t *Timeouts; /* Timed callbacks for main loop */
++#endif /* HAVE_AVAHI */
++
++
+
+ /*
+ * Prototypes...
+@@ -242,6 +256,20 @@ extern void cupsdStopSelect(void);
+ extern void cupsdStartServer(void);
+ extern void cupsdStopServer(void);
+
++#ifdef HAVE_AVAHI
++extern void cupsdInitTimeouts(void);
++extern cupsd_timeout_t *cupsdAddTimeout (const struct timeval *tv,
++ cupsd_timeoutfunc_t cb,
++ void *data);
++extern cupsd_timeout_t *cupsdNextTimeout (long *delay);
++extern void cupsdRunTimeout (cupsd_timeout_t *timeout);
++extern void cupsdUpdateTimeout (cupsd_timeout_t *timeout,
++ const struct timeval *tv);
++extern void cupsdRemoveTimeout (cupsd_timeout_t *timeout);
++#endif /* HAVE_AVAHI */
++
++extern int cupsdRemoveFile(const char *filename);
++
+
+ /*
+ * End of "$Id: cupsd.h 9766 2011-05-11 22:17:34Z mike $".
+diff -up cups-1.5.2/scheduler/main.c.avahi-3-timeouts cups-1.5.2/scheduler/main.c
+--- cups-1.5.2/scheduler/main.c.avahi-3-timeouts 2012-03-14 15:04:17.655305548 +0000
++++ cups-1.5.2/scheduler/main.c 2012-03-14 15:06:36.511476986 +0000
+@@ -146,6 +146,10 @@ main(int argc, /* I - Number of comm
+ int launchd_idle_exit;
+ /* Idle exit on select timeout? */
+ #endif /* HAVE_LAUNCHD */
++#ifdef HAVE_AVAHI
++ cupsd_timeout_t *tmo; /* Next scheduled timed callback */
++ long tmo_delay; /* Time before it must be called */
++#endif /* HAVE_AVAHI */
+
+
+ #ifdef HAVE_GETEUID
+@@ -535,6 +539,14 @@ main(int argc, /* I - Number of comm
+
+ httpInitialize();
+
++#ifdef HAVE_AVAHI
++ /*
++ * Initialize timed callback structures.
++ */
++
++ cupsdInitTimeouts();
++#endif /* HAVE_AVAHI */
++
+ cupsdStartServer();
+
+ /*
+@@ -874,6 +886,16 @@ main(int argc, /* I - Number of comm
+ }
+ #endif /* __APPLE__ */
+
++#ifdef HAVE_AVAHI
++ /*
++ * If a timed callback is due, run it.
++ */
++
++ tmo = cupsdNextTimeout (&tmo_delay);
++ if (tmo && tmo_delay == 0)
++ cupsdRunTimeout (tmo);
++#endif /* HAVE_AVAHI */
++
+ #ifndef __APPLE__
+ /*
+ * Update the network interfaces once a minute...
+@@ -1787,6 +1809,10 @@ select_timeout(int fds) /* I - Number
+ cupsd_job_t *job; /* Job information */
+ cupsd_subscription_t *sub; /* Subscription information */
+ const char *why; /* Debugging aid */
++#ifdef HAVE_AVAHI
++ cupsd_timeout_t *tmo; /* Timed callback */
++ long tmo_delay; /* Seconds before calling it */
++#endif /* HAVE_AVAHI */
+
+
+ /*
+@@ -1829,6 +1855,19 @@ select_timeout(int fds) /* I - Number
+ }
+ #endif /* __APPLE__ */
+
++#ifdef HAVE_AVAHI
++ /*
++ * See if there are any scheduled timed callbacks to run.
++ */
++
++ if ((tmo = cupsdNextTimeout(&tmo_delay)) != NULL &&
++ (now + tmo_delay) < timeout)
++ {
++ timeout = tmo_delay;
++ why = "run a timed callback";
++ }
++#endif /* HAVE_AVAHI */
++
+ /*
+ * Check whether we are accepting new connections...
+ */
+diff -up cups-1.5.2/scheduler/Makefile.avahi-3-timeouts cups-1.5.2/scheduler/Makefile
+--- cups-1.5.2/scheduler/Makefile.avahi-3-timeouts 2012-03-14 15:04:17.685305586 +0000
++++ cups-1.5.2/scheduler/Makefile 2012-03-14 15:06:36.508476980 +0000
+@@ -39,7 +39,8 @@ CUPSDOBJS = \
+ server.o \
+ statbuf.o \
+ subscriptions.o \
+- sysman.o
++ sysman.o \
++ timeout.o
+ LIBOBJS = \
+ filter.o \
+ mime.o \
+diff -up cups-1.5.2/scheduler/timeout.c.avahi-3-timeouts cups-1.5.2/scheduler/timeout.c
+--- cups-1.5.2/scheduler/timeout.c.avahi-3-timeouts 2012-03-14 15:06:36.552477037 +0000
++++ cups-1.5.2/scheduler/timeout.c 2012-03-14 15:06:36.552477037 +0000
+@@ -0,0 +1,235 @@
++/*
++ * "$Id$"
++ *
++ * Timeout functions for the Common UNIX Printing System (CUPS).
++ *
++ * Copyright (C) 2010, 2011 Red Hat, Inc.
++ * Authors:
++ * Tim Waugh <twaugh@redhat.com>
++ *
++ * 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++ * OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * Contents:
++ *
++ * cupsdInitTimeouts() - Initialise timeout structure.
++ * cupsdAddTimeout() - Add a timed callback.
++ * cupsdNextTimeout() - Find the next enabled timed callback.
++ * cupsdUpdateTimeout() - Adjust the time of a timed callback or disable it.
++ * cupsdRemoveTimeout() - Discard a timed callback.
++ * compare_timeouts() - Compare timed callbacks for array sorting.
++ */
++
++#include <config.h>
++
++#ifdef HAVE_AVAHI /* Applies to entire file... */
++
++/*
++ * Include necessary headers...
++ */
++
++#include "cupsd.h"
++
++#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
++# include <malloc.h>
++#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
++
++#ifdef HAVE_AVAHI
++# include <avahi-common/timeval.h>
++#endif /* HAVE_AVAHI */
++
++
++struct _cupsd_timeout_s
++{
++ struct timeval when;
++ int enabled;
++ cupsd_timeoutfunc_t callback;
++ void *data;
++};
++
++/*
++ * Local functions...
++ */
++
++/*
++ * 'compare_timeouts()' - Compare timed callbacks for array sorting.
++ */
++
++static int
++compare_addrs (void *p0, void *p1)
++{
++ if (p0 == p1)
++ return (0);
++ if (p0 < p1)
++ return (-1);
++ return (1);
++}
++
++static int
++compare_timeouts (cupsd_timeout_t *p0, cupsd_timeout_t *p1)
++{
++ int addrsdiff = compare_addrs (p0, p1);
++ int tvdiff;
++
++ if (addrsdiff == 0)
++ return (0);
++
++ if (!p0->enabled || !p1->enabled)
++ {
++ if (!p0->enabled && !p1->enabled)
++ return (addrsdiff);
++
++ return (p0->enabled ? -1 : 1);
++ }
++
++ tvdiff = avahi_timeval_compare (&p0->when, &p1->when);
++ if (tvdiff != 0)
++ return (tvdiff);
++
++ return (addrsdiff);
++}
++
++
++/*
++ * 'cupsdInitTimeouts()' - Initialise timeout structures.
++ */
++
++void
++cupsdInitTimeouts(void)
++{
++ Timeouts = cupsArrayNew ((cups_array_func_t)compare_timeouts, NULL);
++}
++
++
++/*
++ * 'cupsdAddTimeout()' - Add a timed callback.
++ */
++
++cupsd_timeout_t * /* O - Timeout handle */
++cupsdAddTimeout(const struct timeval *tv, /* I - Absolute time */
++ cupsd_timeoutfunc_t cb, /* I - Callback function */
++ void *data) /* I - User data */
++{
++ cupsd_timeout_t *timeout;
++
++ timeout = malloc (sizeof(cupsd_timeout_t));
++ if (timeout != NULL)
++ {
++ timeout->enabled = (tv != NULL);
++ if (tv)
++ {
++ timeout->when.tv_sec = tv->tv_sec;
++ timeout->when.tv_usec = tv->tv_usec;
++ }
++
++ timeout->callback = cb;
++ timeout->data = data;
++ cupsArrayAdd (Timeouts, timeout);
++ }
++
++ return timeout;
++}
++
++
++/*
++ * 'cupsdNextTimeout()' - Find the next enabled timed callback.
++ */
++
++cupsd_timeout_t * /* O - Next enabled timeout or NULL */
++cupsdNextTimeout(long *delay) /* O - Seconds before scheduled */
++{
++ cupsd_timeout_t *first = cupsArrayFirst (Timeouts);
++ struct timeval curtime;
++
++ if (first && !first->enabled)
++ first = NULL;
++
++ if (first && delay)
++ {
++ gettimeofday (&curtime, NULL);
++ if (avahi_timeval_compare (&curtime, &first->when) > 0)
++ {
++ *delay = 0;
++ } else {
++ *delay = 1 + first->when.tv_sec - curtime.tv_sec;
++ if (first->when.tv_usec < curtime.tv_usec)
++ (*delay)--;
++ }
++ }
++
++ return (first);
++}
++
++
++/*
++ * 'cupsdRunTimeout()' - Run a timed callback.
++ */
++
++void
++cupsdRunTimeout(cupsd_timeout_t *timeout) /* I - Timeout */
++{
++ if (!timeout)
++ return;
++ timeout->enabled = 0;
++ if (!timeout->callback)
++ return;
++ timeout->callback (timeout, timeout->data);
++}
++
++/*
++ * 'cupsdUpdateTimeout()' - Adjust the time of a timed callback or disable it.
++ */
++
++void
++cupsdUpdateTimeout(cupsd_timeout_t *timeout, /* I - Timeout */
++ const struct timeval *tv) /* I - Absolute time or NULL */
++{
++ cupsArrayRemove (Timeouts, timeout);
++ timeout->enabled = (tv != NULL);
++ if (tv)
++ {
++ timeout->when.tv_sec = tv->tv_sec;
++ timeout->when.tv_usec = tv->tv_usec;
++ }
++ cupsArrayAdd (Timeouts, timeout);
++}
++
++
++/*
++ * 'cupsdRemoveTimeout()' - Discard a timed callback.
++ */
++
++void
++cupsdRemoveTimeout(cupsd_timeout_t *timeout) /* I - Timeout */
++{
++ cupsArrayRemove (Timeouts, timeout);
++ free (timeout);
++}
++
++
++#endif /* HAVE_AVAHI ... from top of file */
++
++/*
++ * End of "$Id$".
++ */
diff --git a/abs/extra/cups/cups-avahi-4-poll.patch b/abs/extra/cups/cups-avahi-4-poll.patch
new file mode 100644
index 0000000..d7fa5fd
--- /dev/null
+++ b/abs/extra/cups/cups-avahi-4-poll.patch
@@ -0,0 +1,529 @@
+diff -up cups-1.5.2/scheduler/avahi.c.avahi-4-poll cups-1.5.2/scheduler/avahi.c
+--- cups-1.5.2/scheduler/avahi.c.avahi-4-poll 2012-03-14 15:07:29.477542381 +0000
++++ cups-1.5.2/scheduler/avahi.c 2012-03-14 15:07:29.477542381 +0000
+@@ -0,0 +1,441 @@
++/*
++ * "$Id$"
++ *
++ * Avahi poll implementation for the CUPS scheduler.
++ *
++ * Copyright (C) 2010, 2011 Red Hat, Inc.
++ * Authors:
++ * Tim Waugh <twaugh@redhat.com>
++ *
++ * 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++ * OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * Contents:
++ *
++ * watch_read_cb - Read callback for file descriptor
++ * watch_write_cb - Write callback for file descriptor
++ * watched_fd_add_select() - Call cupsdAddSelect() as needed
++ * watch_new() - Create a new file descriptor watch
++ * watch_free() - Free a file descriptor watch
++ * watch_update() - Update watched events for a file descriptor
++ * watch_get_events() - Get events that happened for a file descriptor
++ * timeout_cb() - Run a timed Avahi callback
++ * timeout_new() - Set a wakeup time
++ * timeout_update() - Update the expiration time for a timeout
++ * timeout_free() - Free a timeout
++ * compare_watched_fds() - Compare watched file descriptors for array sorting
++ * avahi_cups_poll_new() - Create a new Avahi main loop object for CUPS
++ * avahi_cups_poll_free() - Free an Avahi main loop object for CUPS
++ * avahi_cups_poll_get() - Get the abstract poll API structure
++ */
++
++#include <config.h>
++
++#ifdef HAVE_AVAHI /* Applies to entire file... */
++
++/*
++ * Include necessary headers...
++ */
++
++#include "cupsd.h"
++
++#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
++# include <malloc.h>
++#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
++
++#ifdef HAVE_AVAHI
++# include <avahi-common/timeval.h>
++#endif /* HAVE_AVAHI */
++
++
++typedef struct
++{
++ AvahiCupsPoll *cups_poll;
++
++ int fd;
++ AvahiWatchEvent occurred;
++ cups_array_t *watches;
++} cupsd_watched_fd_t;
++
++struct AvahiWatch
++{
++ cupsd_watched_fd_t *watched_fd;
++
++ AvahiWatchEvent events;
++ AvahiWatchCallback callback;
++ void *userdata;
++};
++
++struct AvahiTimeout
++{
++ AvahiCupsPoll *cups_poll;
++ AvahiTimeoutCallback callback;
++ void *userdata;
++ cupsd_timeout_t *cupsd_timeout;
++};
++
++/*
++ * Local functions...
++ */
++
++static AvahiWatch * watch_new(const AvahiPoll *api,
++ int fd,
++ AvahiWatchEvent events,
++ AvahiWatchCallback callback,
++ void *userdata);
++static void watch_free(AvahiWatch *watch);
++static void watch_update(AvahiWatch *watch,
++ AvahiWatchEvent events);
++static AvahiWatchEvent watch_get_events(AvahiWatch *watch);
++
++
++/*
++ * 'watch_read_cb' - Read callback for file descriptor
++ */
++
++static void
++watch_read_cb (void *userdata)
++{
++ AvahiWatch *watch;
++ cupsd_watched_fd_t *watched_fd = userdata;
++ watched_fd->occurred |= AVAHI_WATCH_IN;
++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches);
++ watch;
++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches))
++ {
++ if (watch->events & watched_fd->occurred)
++ {
++ (watch->callback) (watch, watched_fd->fd,
++ AVAHI_WATCH_IN, watch->userdata);
++ watched_fd->occurred &= ~AVAHI_WATCH_IN;
++ break;
++ }
++ }
++}
++
++
++/*
++ * 'watch_write_cb' - Write callback for file descriptor
++ */
++
++static void
++watch_write_cb (void *userdata)
++{
++ AvahiWatch *watch;
++ cupsd_watched_fd_t *watched_fd = userdata;
++ watched_fd->occurred |= AVAHI_WATCH_OUT;
++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches);
++ watch;
++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches))
++ {
++ if (watch->events & watched_fd->occurred)
++ {
++ (watch->callback) (watch, watched_fd->fd,
++ AVAHI_WATCH_OUT, watch->userdata);
++ watched_fd->occurred &= ~AVAHI_WATCH_OUT;
++ break;
++ }
++ }
++}
++
++
++/*
++ * 'watched_fd_add_select' - Call cupsdAddSelect() as needed
++ */
++
++static int /* O - Watches? */
++watched_fd_add_select (cupsd_watched_fd_t *watched_fd)
++{
++ AvahiWatch *watch;
++ cupsd_selfunc_t read_cb = NULL, write_cb = NULL;
++ int any_watches = 0;
++
++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches);
++ watch;
++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches))
++ {
++ any_watches = 1;
++ if (watch->events & (AVAHI_WATCH_IN |
++ AVAHI_WATCH_ERR |
++ AVAHI_WATCH_HUP))
++ {
++ read_cb = (cupsd_selfunc_t)watch_read_cb;
++ if (write_cb != NULL)
++ break;
++ }
++
++ if (watch->events & AVAHI_WATCH_OUT)
++ {
++ write_cb = (cupsd_selfunc_t)watch_write_cb;
++ if (read_cb != NULL)
++ break;
++ }
++ }
++
++ if (read_cb || write_cb)
++ cupsdAddSelect (watched_fd->fd, read_cb, write_cb, watched_fd);
++ else
++ cupsdRemoveSelect (watched_fd->fd);
++
++ return (any_watches);
++}
++
++/*
++ * 'watch_new' - Create a new file descriptor watch
++ */
++
++static AvahiWatch *
++watch_new (const AvahiPoll *api,
++ int fd,
++ AvahiWatchEvent events,
++ AvahiWatchCallback callback,
++ void *userdata)
++{
++ cupsd_watched_fd_t key, *watched_fd;
++ AvahiCupsPoll *cups_poll = api->userdata;
++ AvahiWatch *watch = malloc(sizeof(AvahiWatch));
++ if (watch == NULL)
++ return (NULL);
++
++ watch->events = events;
++ watch->callback = callback;
++ watch->userdata = userdata;
++
++ key.fd = fd;
++ watched_fd = cupsArrayFind (cups_poll->watched_fds, &key);
++ if (watched_fd == NULL)
++ {
++ watched_fd = malloc(sizeof(cupsd_watched_fd_t));
++ if (watched_fd == NULL)
++ {
++ free (watch);
++ return (NULL);
++ }
++
++ watched_fd->fd = fd;
++ watched_fd->occurred = 0;
++ watched_fd->cups_poll = cups_poll;
++ watched_fd->watches = cupsArrayNew (NULL, NULL);
++ cupsArrayAdd (cups_poll->watched_fds, watched_fd);
++ }
++
++ watch->watched_fd = watched_fd;
++ cupsArrayAdd(watched_fd->watches, watch);
++ watched_fd_add_select (watched_fd);
++ return (watch);
++}
++
++
++/*
++ * 'watch_free' - Free a file descriptor watch
++ */
++
++static void
++watch_free (AvahiWatch *watch)
++{
++ cupsd_watched_fd_t *watched_fd = watch->watched_fd;
++ AvahiCupsPoll *cups_poll = watched_fd->cups_poll;
++
++ cupsArrayRemove (watched_fd->watches, watch);
++ free (watch);
++
++ if (!watched_fd_add_select (watched_fd))
++ {
++ /* No more watches */
++ cupsArrayRemove (cups_poll->watched_fds, watched_fd);
++ free (watched_fd);
++ }
++}
++
++
++/*
++ * 'watch_update' - Update watched events for a file descriptor
++ */
++
++static void
++watch_update (AvahiWatch *watch,
++ AvahiWatchEvent events)
++{
++ watch->events = events;
++ watched_fd_add_select (watch->watched_fd);
++}
++
++
++/*
++ * 'watch_get_events' - Get events that happened for a file descriptor
++ */
++
++static AvahiWatchEvent
++watch_get_events (AvahiWatch *watch)
++{
++ return (watch->watched_fd->occurred);
++}
++
++
++/*
++ * 'timeout_cb()' - Run a timed Avahi callback
++ */
++
++static void
++timeout_cb (cupsd_timeout_t *cupsd_timeout, void *userdata)
++{
++ AvahiTimeout *timeout = userdata;
++ (timeout->callback) (timeout, timeout->userdata);
++}
++
++
++/*
++ * 'timeout_new' - Set a wakeup time
++ */
++
++static AvahiTimeout *
++timeout_new (const AvahiPoll *api,
++ const struct timeval *tv,
++ AvahiTimeoutCallback callback,
++ void *userdata)
++{
++ AvahiTimeout *timeout;
++ AvahiCupsPoll *cups_poll = api->userdata;
++
++ timeout = malloc(sizeof(AvahiTimeout));
++ if (timeout == NULL)
++ return (NULL);
++
++ timeout->cups_poll = cups_poll;
++ timeout->callback = callback;
++ timeout->userdata = userdata;
++ timeout->cupsd_timeout = cupsdAddTimeout (tv,
++ (cupsd_timeoutfunc_t)timeout_cb,
++ timeout);
++ cupsArrayAdd (cups_poll->timeouts, timeout);
++ return (timeout);
++}
++
++
++/*
++ * 'timeout_update' - Update the expiration time for a timeout
++ */
++
++static void
++timeout_update (AvahiTimeout *timeout,
++ const struct timeval *tv)
++{
++ cupsdUpdateTimeout (timeout->cupsd_timeout, tv);
++}
++
++
++/*
++ * ' timeout_free' - Free a timeout
++ */
++
++static void
++timeout_free (AvahiTimeout *timeout)
++{
++ cupsArrayRemove (timeout->cups_poll->timeouts, timeout);
++ cupsdRemoveTimeout (timeout->cupsd_timeout);
++ free (timeout);
++}
++
++
++/*
++ * 'compare_watched_fds' - Compare watched file descriptors for array sorting
++ */
++static int
++compare_watched_fds(cupsd_watched_fd_t *p0,
++ cupsd_watched_fd_t *p1)
++{
++ /*
++ * Compare by fd (no two elements have the same fd)
++ */
++
++ if (p0->fd == p1->fd)
++ return 0;
++
++ return (p0->fd < p1->fd ? -1 : 1);
++}
++
++
++/*
++ * 'avahi_cups_poll_new' - Create a new Avahi main loop object for CUPS
++ */
++
++AvahiCupsPoll *
++avahi_cups_poll_new (void)
++{
++ AvahiCupsPoll *cups_poll = malloc(sizeof(AvahiCupsPoll));
++ if (cups_poll == NULL)
++ return (NULL);
++
++ cups_poll->watched_fds = cupsArrayNew ((cups_array_func_t)compare_watched_fds,
++ NULL);
++ cups_poll->timeouts = cupsArrayNew (NULL, NULL);
++
++ cups_poll->api.userdata = cups_poll;
++ cups_poll->api.watch_new = watch_new;
++ cups_poll->api.watch_free = watch_free;
++ cups_poll->api.watch_update = watch_update;
++ cups_poll->api.watch_get_events = watch_get_events;
++
++ cups_poll->api.timeout_new = timeout_new;
++ cups_poll->api.timeout_update = timeout_update;
++ cups_poll->api.timeout_free = timeout_free;
++
++ return (cups_poll);
++}
++
++
++/*
++ * 'avahi_cups_poll_free' - Free an Avahi main loop object for CUPS
++ */
++void
++avahi_cups_poll_free (AvahiCupsPoll *cups_poll)
++{
++ cupsd_watched_fd_t *watched_fd;
++
++ for (watched_fd = (cupsd_watched_fd_t*)cupsArrayFirst(cups_poll->watched_fds);
++ watched_fd;
++ watched_fd = (cupsd_watched_fd_t*)cupsArrayNext(cups_poll->watched_fds))
++ cupsArrayClear (watched_fd->watches);
++
++ cupsArrayClear (cups_poll->watched_fds);
++ cupsArrayClear (cups_poll->timeouts);
++}
++
++
++/*
++ * 'avahi_cups_poll_get' - Get the abstract poll API structure
++ */
++
++const AvahiPoll *
++avahi_cups_poll_get (AvahiCupsPoll *cups_poll)
++{
++ return (&cups_poll->api);
++}
++
++
++#endif /* HAVE_AVAHI ... from top of file */
++
++/*
++ * End of "$Id$".
++ */
+diff -up cups-1.5.2/scheduler/avahi.h.avahi-4-poll cups-1.5.2/scheduler/avahi.h
+--- cups-1.5.2/scheduler/avahi.h.avahi-4-poll 2012-03-14 15:07:29.477542381 +0000
++++ cups-1.5.2/scheduler/avahi.h 2012-03-14 15:07:29.477542381 +0000
+@@ -0,0 +1,69 @@
++/*
++ * "$Id$"
++ *
++ * Avahi poll implementation for the CUPS scheduler.
++ *
++ * Copyright (C) 2010, 2011 Red Hat, Inc.
++ * Authors:
++ * Tim Waugh <twaugh@redhat.com>
++ *
++ * 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++ * OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#include <config.h>
++
++#ifdef HAVE_AVAHI
++# include <avahi-client/client.h>
++# include <avahi-client/publish.h>
++#endif /* HAVE_AVAHI */
++
++#ifdef HAVE_AUTHORIZATION_H
++# include <Security/Authorization.h>
++#endif /* HAVE_AUTHORIZATION_H */
++
++
++#ifdef HAVE_AVAHI
++typedef struct
++{
++ AvahiPoll api;
++ cups_array_t *watched_fds;
++ cups_array_t *timeouts;
++} AvahiCupsPoll;
++#endif /* HAVE_AVAHI */
++
++/*
++ * Prototypes...
++ */
++
++#ifdef HAVE_AVAHI
++extern AvahiCupsPoll * avahi_cups_poll_new(void);
++extern void avahi_cups_poll_free(AvahiCupsPoll *cups_poll);
++extern const AvahiPoll *avahi_cups_poll_get(AvahiCupsPoll *cups_poll);
++#endif /* HAVE_AVAHI */
++
++
++/*
++ * End of "$Id$".
++ */
+diff -up cups-1.5.2/scheduler/Makefile.avahi-4-poll cups-1.5.2/scheduler/Makefile
+--- cups-1.5.2/scheduler/Makefile.avahi-4-poll 2012-03-14 15:06:36.508476980 +0000
++++ cups-1.5.2/scheduler/Makefile 2012-03-14 15:07:29.476542380 +0000
+@@ -17,6 +17,7 @@ include ../Makedefs
+
+ CUPSDOBJS = \
+ auth.o \
++ avahi.o \
+ banners.o \
+ cert.o \
+ classes.o \
diff --git a/abs/extra/cups/cups-avahi-5-services.patch b/abs/extra/cups/cups-avahi-5-services.patch
new file mode 100644
index 0000000..820b3c3
--- /dev/null
+++ b/abs/extra/cups/cups-avahi-5-services.patch
@@ -0,0 +1,1272 @@
+diff -up cups-1.5.2/cgi-bin/admin.c.avahi-5-services cups-1.5.2/cgi-bin/admin.c
+--- cups-1.5.2/cgi-bin/admin.c.avahi-5-services 2011-08-17 22:01:53.000000000 +0100
++++ cups-1.5.2/cgi-bin/admin.c 2012-03-14 15:08:25.701611799 +0000
+@@ -1643,7 +1643,7 @@ do_config_server(http_t *http) /* I - H
+ else
+ local_protocols[0] = '\0';
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ if (cgiGetVariable("BROWSE_LOCAL_DNSSD"))
+ {
+ if (local_protocols[0])
+@@ -1651,7 +1651,7 @@ do_config_server(http_t *http) /* I - H
+ else
+ strcat(local_protocols, "dnssd");
+ }
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ #ifdef HAVE_LDAP
+ if (cgiGetVariable("BROWSE_LOCAL_LDAP"))
+@@ -2718,9 +2718,9 @@ do_menu(http_t *http) /* I - HTTP conn
+ #endif /* HAVE_GSSAPI */
+ cgiSetVariable("KERBEROS", "");
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ cgiSetVariable("HAVE_DNSSD", "1");
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ #ifdef HAVE_LDAP
+ cgiSetVariable("HAVE_LDAP", "1");
+diff -up cups-1.5.2/scheduler/avahi.h.avahi-5-services cups-1.5.2/scheduler/avahi.h
+--- cups-1.5.2/scheduler/avahi.h.avahi-5-services 2012-03-14 15:07:29.477542381 +0000
++++ cups-1.5.2/scheduler/avahi.h 2012-03-14 15:08:25.701611799 +0000
+@@ -3,7 +3,7 @@
+ *
+ * Avahi poll implementation for the CUPS scheduler.
+ *
+- * Copyright (C) 2010, 2011 Red Hat, Inc.
++ * Copyright (C) 2010, 2011, 2012 Red Hat, Inc.
+ * Authors:
+ * Tim Waugh <twaugh@redhat.com>
+ *
+@@ -32,37 +32,40 @@
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#include <config.h>
++#ifndef _CUPS_AVAHI_H_
++# define _CUPS_AVAHI_H_
+
+-#ifdef HAVE_AVAHI
+-# include <avahi-client/client.h>
+-# include <avahi-client/publish.h>
+-#endif /* HAVE_AVAHI */
++/*
++ * Include necessary headers...
++ */
+
+-#ifdef HAVE_AUTHORIZATION_H
+-# include <Security/Authorization.h>
+-#endif /* HAVE_AUTHORIZATION_H */
++# include <config.h>
+
++# ifdef HAVE_AVAHI
++# include <avahi-client/client.h>
++# include <avahi-client/publish.h>
++# endif /* HAVE_AVAHI */
+
+-#ifdef HAVE_AVAHI
++# ifdef HAVE_AVAHI
+ typedef struct
+ {
+ AvahiPoll api;
+ cups_array_t *watched_fds;
+ cups_array_t *timeouts;
+ } AvahiCupsPoll;
+-#endif /* HAVE_AVAHI */
++# endif /* HAVE_AVAHI */
+
+ /*
+ * Prototypes...
+ */
+
+-#ifdef HAVE_AVAHI
++# ifdef HAVE_AVAHI
+ extern AvahiCupsPoll * avahi_cups_poll_new(void);
+ extern void avahi_cups_poll_free(AvahiCupsPoll *cups_poll);
+ extern const AvahiPoll *avahi_cups_poll_get(AvahiCupsPoll *cups_poll);
+-#endif /* HAVE_AVAHI */
++# endif /* HAVE_AVAHI */
+
++#endif /* !_CUPS_AVAHI_H_ */
+
+ /*
+ * End of "$Id$".
+diff -up cups-1.5.2/scheduler/client.c.avahi-5-services cups-1.5.2/scheduler/client.c
+--- cups-1.5.2/scheduler/client.c.avahi-5-services 2012-01-13 23:00:22.000000000 +0000
++++ cups-1.5.2/scheduler/client.c 2012-03-14 15:08:25.703611797 +0000
+@@ -4989,7 +4989,7 @@ valid_host(cupsd_client_t *con) /* I -
+ !strncmp(host, "[::1]:", 6));
+ }
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ /*
+ * Check if the hostname is something.local (Bonjour); if so, allow it.
+ */
+@@ -4998,7 +4998,7 @@ valid_host(cupsd_client_t *con) /* I -
+ (!_cups_strcasecmp(end, ".local") || !_cups_strncasecmp(end, ".local:", 7) ||
+ !_cups_strcasecmp(end, ".local.") || !_cups_strncasecmp(end, ".local.:", 8)))
+ return (1);
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ /*
+ * Check if the hostname is an IP address...
+diff -up cups-1.5.2/scheduler/conf.c.avahi-5-services cups-1.5.2/scheduler/conf.c
+--- cups-1.5.2/scheduler/conf.c.avahi-5-services 2012-03-14 15:04:17.636305526 +0000
++++ cups-1.5.2/scheduler/conf.c 2012-03-14 15:08:25.706611803 +0000
+@@ -652,7 +652,7 @@ cupsdReadConfiguration(void)
+ Browsing = CUPS_DEFAULT_BROWSING;
+ DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED;
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ cupsdSetString(&DNSSDRegType, "_ipp._tcp,_cups");
+ #endif /* HAVE_DNSSD */
+
+diff -up cups-1.5.2/scheduler/dirsvc.c.avahi-5-services cups-1.5.2/scheduler/dirsvc.c
+--- cups-1.5.2/scheduler/dirsvc.c.avahi-5-services 2012-03-14 15:04:17.674305572 +0000
++++ cups-1.5.2/scheduler/dirsvc.c 2012-03-14 15:08:25.709611806 +0000
+@@ -27,6 +27,7 @@
+ * ldap_connect() - Start new LDAP connection
+ * ldap_reconnect() - Reconnect to LDAP Server
+ * ldap_disconnect() - Disconnect from LDAP Server
++ * cupsdStartAvahiClient() - Start an Avahi client if needed
+ * cupsdStartBrowsing() - Start sending and receiving broadcast
+ * information.
+ * cupsdStartPolling() - Start polling servers as needed.
+@@ -40,11 +41,12 @@
+ * dequote() - Remote quotes from a string.
+ * dnssdAddAlias() - Add a DNS-SD alias name.
+ * dnssdBuildTxtRecord() - Build a TXT record from printer info.
+- * dnssdComparePrinters() - Compare the registered names of two printers.
+ * dnssdDeregisterPrinter() - Stop sending broadcast information for a
+ * printer.
+ * dnssdPackTxtRecord() - Pack an array of key/value pairs into the TXT
+ * record format.
++ * avahiPackTxtRecord() - Pack an array of key/value pairs into an
++ * AvahiStringList.
+ * dnssdRegisterCallback() - DNSServiceRegister callback.
+ * dnssdRegisterPrinter() - Start sending broadcast information for a
+ * printer or update the broadcast contents.
+@@ -83,6 +85,7 @@
+ */
+
+ #include "cupsd.h"
++#include <assert.h>
+ #include <grp.h>
+
+ #ifdef HAVE_DNSSD
+@@ -97,6 +100,17 @@
+ # endif /* HAVE_SYSTEMCONFIGURATION */
+ # endif /* __APPLE__ */
+ #endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++# include <avahi-common/domain.h>
++#endif /* HAVE_AVAHI */
++
++
++#ifdef HAVE_DNSSD
++typedef char *cupsd_txt_record_t;
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++typedef AvahiStringList *cupsd_txt_record_t;
++#endif /* HAVE_AVAHI */
+
+
+ /*
+@@ -159,27 +173,38 @@ static void update_polling(void);
+ static void update_smb(int onoff);
+
+
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++static cupsd_txt_record_t dnssdBuildTxtRecord(int *txt_len, cupsd_printer_t *p,
++ int for_lpd);
++static void dnssdDeregisterPrinter(cupsd_printer_t *p);
++static void dnssdRegisterPrinter(cupsd_printer_t *p);
++static void dnssdStop(void);
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
++
+ #ifdef HAVE_DNSSD
+ # ifdef HAVE_COREFOUNDATION
+ static void dnssdAddAlias(const void *key, const void *value,
+ void *context);
+ # endif /* HAVE_COREFOUNDATION */
+-static char *dnssdBuildTxtRecord(int *txt_len, cupsd_printer_t *p,
+- int for_lpd);
+-static int dnssdComparePrinters(cupsd_printer_t *a, cupsd_printer_t *b);
+-static void dnssdDeregisterPrinter(cupsd_printer_t *p);
+-static char *dnssdPackTxtRecord(int *txt_len, char *keyvalue[][2],
+- int count);
+ static void dnssdRegisterCallback(DNSServiceRef sdRef,
+ DNSServiceFlags flags,
+ DNSServiceErrorType errorCode,
+ const char *name, const char *regtype,
+ const char *domain, void *context);
+-static void dnssdRegisterPrinter(cupsd_printer_t *p);
+-static void dnssdStop(void);
+ static void dnssdUpdate(void);
+ #endif /* HAVE_DNSSD */
+
++#ifdef HAVE_AVAHI
++static AvahiStringList *avahiPackTxtRecord(char *keyvalue[][2],
++ int count);
++static void avahi_entry_group_cb (AvahiEntryGroup *group,
++ AvahiEntryGroupState state,
++ void *userdata);
++static void avahi_client_cb (AvahiClient *client,
++ AvahiClientState state,
++ void *userdata);
++#endif /* HAVE_AVAHI */
++
+ #ifdef HAVE_LDAP
+ static const char * const ldap_attrs[] =/* CUPS LDAP attributes */
+ {
+@@ -283,10 +308,10 @@ cupsdDeregisterPrinter(
+ ldap_dereg_printer(p);
+ #endif /* HAVE_LDAP */
+
+-#ifdef HAVE_DNSSD
+- if (removeit && (BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDRef)
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++ if (removeit && (BrowseLocalProtocols & BROWSE_DNSSD))
+ dnssdDeregisterPrinter(p);
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+ }
+
+
+@@ -702,10 +727,10 @@ cupsdRegisterPrinter(cupsd_printer_t *p)
+ slpRegisterPrinter(p); */
+ #endif /* HAVE_LIBSLP */
+
+-#ifdef HAVE_DNSSD
+- if ((BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDRef)
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++ if ((BrowseLocalProtocols & BROWSE_DNSSD))
+ dnssdRegisterPrinter(p);
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+ }
+
+
+@@ -1419,6 +1444,36 @@ ldap_disconnect(LDAP *ld) /* I - LDAP h
+ #endif /* HAVE_LDAP */
+
+
++#ifdef HAVE_AVAHI
++/*
++ * 'cupsdStartAvahiClient()' - Start an Avahi client if needed
++ */
++
++void
++cupsdStartAvahiClient(void)
++{
++ int error = 0;
++
++ if (!AvahiCupsClient && !AvahiCupsClientConnecting)
++ {
++ if (!AvahiCupsPollHandle)
++ AvahiCupsPollHandle = avahi_cups_poll_new ();
++
++ if (AvahiCupsPollHandle)
++ {
++ if (avahi_client_new (avahi_cups_poll_get (AvahiCupsPollHandle),
++ AVAHI_CLIENT_NO_FAIL,
++ avahi_client_cb, NULL,
++ &error) != NULL)
++ AvahiCupsClientConnecting = 1;
++ else
++ cupsdLogMessage (CUPSD_LOG_WARN, "Avahi client failed: %d", error);
++ }
++ }
++}
++#endif /* HAVE_AVAHI */
++
++
+ /*
+ * 'cupsdStartBrowsing()' - Start sending and receiving broadcast information.
+ */
+@@ -1542,13 +1597,16 @@ cupsdStartBrowsing(void)
+ else
+ BrowseSocket = -1;
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_DNSSD)
+ {
++#ifdef HAVE_DNSSD
+ DNSServiceErrorType error; /* Error from service creation */
++#endif /* HAVE_DNSSD */
+ cupsd_listener_t *lis; /* Current listening socket */
+
+
++#ifdef HAVE_DNSSD
+ /*
+ * First create a "master" connection for all registrations...
+ */
+@@ -1573,6 +1631,7 @@ cupsdStartBrowsing(void)
+ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
+
+ cupsdAddSelect(fd, (cupsd_selfunc_t)dnssdUpdate, NULL, NULL);
++#endif /* HAVE_DNSSD */
+
+ /*
+ * Then get the port we use for registrations. If we are not listening
+@@ -1598,17 +1657,23 @@ cupsdStartBrowsing(void)
+ */
+
+ if (BrowseRemoteProtocols & BROWSE_DNSSD)
+- DNSSDPrinters = cupsArrayNew((cups_array_func_t)dnssdComparePrinters,
+- NULL);
++ DNSSDPrinters = cupsArrayNew(NULL, NULL);
+
+ /*
+ * Set the computer name and register the web interface...
+ */
+
+ cupsdUpdateDNSSDName();
++
++#ifdef HAVE_AVAHI
++ cupsdStartAvahiClient ();
++#endif /* HAVE_AVAHI */
++
++#ifdef HAVE_DNSSD
+ }
+- }
+ #endif /* HAVE_DNSSD */
++ }
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ #ifdef HAVE_LIBSLP
+ if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP)
+@@ -1834,10 +1899,10 @@ cupsdStopBrowsing(void)
+ BrowseSocket = -1;
+ }
+
+-#ifdef HAVE_DNSSD
+- if ((BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDRef)
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++ if ((BrowseLocalProtocols & BROWSE_DNSSD))
+ dnssdStop();
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ #ifdef HAVE_LIBSLP
+ if (((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP) &&
+@@ -1902,7 +1967,7 @@ cupsdStopPolling(void)
+ }
+
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ /*
+ * 'cupsdUpdateDNSSDName()' - Update the computer name we use for browsing...
+ */
+@@ -1910,8 +1975,14 @@ cupsdStopPolling(void)
+ void
+ cupsdUpdateDNSSDName(void)
+ {
++#ifdef HAVE_DNSSD
+ DNSServiceErrorType error; /* Error from service creation */
+ char webif[1024]; /* Web interface share name */
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ int ret; /* Error from service creation */
++ char webif[AVAHI_LABEL_MAX]; /* Web interface share name */
++#endif /* HAVE_AVAHI */
+ # ifdef HAVE_SYSTEMCONFIGURATION
+ SCDynamicStoreRef sc; /* Context for dynamic store */
+ CFDictionaryRef btmm; /* Back-to-My-Mac domains */
+@@ -2042,6 +2113,7 @@ cupsdUpdateDNSSDName(void)
+ else
+ strlcpy(webif, "CUPS Web Interface", sizeof(webif));
+
++#ifdef HAVE_DNSSD
+ if (WebIFRef)
+ DNSServiceRefDeallocate(WebIFRef);
+
+@@ -2054,9 +2126,45 @@ cupsdUpdateDNSSDName(void)
+ NULL)) != kDNSServiceErr_NoError)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "DNS-SD web interface registration failed: %d", error);
++#endif /* HAVE_DNSSD */
++
++#ifdef HAVE_AVAHI
++ if (!AvahiCupsClient)
++ /*
++ * Client not yet running.
++ */
++ return;
++
++ if (AvahiWebIFGroup)
++ avahi_entry_group_reset (AvahiWebIFGroup);
++ else
++ AvahiWebIFGroup = avahi_entry_group_new (AvahiCupsClient,
++ avahi_entry_group_cb,
++ NULL);
++
++ if (AvahiWebIFGroup)
++ {
++ ret = avahi_entry_group_add_service (AvahiWebIFGroup,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0, /* flags */
++ webif, /* name */
++ "_http._tcp", /* type */
++ NULL, /* domain */
++ NULL, /* host */
++ DNSSDPort, /* port */
++ "path=/", NULL);
++ if (ret == 0)
++ ret = avahi_entry_group_commit (AvahiWebIFGroup);
++
++ if (ret != 0)
++ cupsdLogMessage (CUPSD_LOG_ERROR,
++ "Avahi web interface registration failed: %d", ret);
++ }
++#endif /* HAVE_AVAHI */
+ }
+ }
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+
+ #ifdef HAVE_LDAP
+@@ -2334,13 +2442,15 @@ dnssdAddAlias(const void *key, /* I - K
+ "Bad Back to My Mac domain in dynamic store!");
+ }
+ # endif /* HAVE_COREFOUNDATION */
++#endif /* HAVE_DNSSD */
+
+
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ /*
+ * 'dnssdBuildTxtRecord()' - Build a TXT record from printer info.
+ */
+
+-static char * /* O - TXT record */
++static cupsd_txt_record_t /* O - TXT record */
+ dnssdBuildTxtRecord(
+ int *txt_len, /* O - TXT record length */
+ cupsd_printer_t *p, /* I - Printer information */
+@@ -2379,7 +2489,12 @@ dnssdBuildTxtRecord(
+ keyvalue[i ][0] = "ty";
+ keyvalue[i++][1] = p->make_model ? p->make_model : "Unknown";
+
+- snprintf(admin_hostname, sizeof(admin_hostname), "%s.local.", DNSSDHostName);
++ snprintf(admin_hostname, sizeof(admin_hostname),
++ "%s.local"
++#ifdef HAVE_DNSSD
++ "." /* terminating dot no good for Avahi */
++#endif /* HAVE_DNSSD */
++ , DNSSDHostName);
+ httpAssembleURIf(HTTP_URI_CODING_ALL, adminurl_str, sizeof(adminurl_str),
+ "http", NULL, admin_hostname, DNSSDPort, "/%s/%s",
+ (p->type & CUPS_PRINTER_CLASS) ? "classes" : "printers",
+@@ -2462,19 +2577,12 @@ dnssdBuildTxtRecord(
+ * Then pack them into a proper txt record...
+ */
+
++#ifdef HAVE_DNSSD
+ return (dnssdPackTxtRecord(txt_len, keyvalue, i));
+-}
+-
+-
+-/*
+- * 'dnssdComparePrinters()' - Compare the registered names of two printers.
+- */
+-
+-static int /* O - Result of comparison */
+-dnssdComparePrinters(cupsd_printer_t *a,/* I - First printer */
+- cupsd_printer_t *b)/* I - Second printer */
+-{
+- return (_cups_strcasecmp(a->reg_name, b->reg_name));
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ return (avahiPackTxtRecord(keyvalue, i));
++#endif /* HAVE_AVAHI */
+ }
+
+
+@@ -2489,6 +2597,10 @@ dnssdDeregisterPrinter(
+ {
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdDeregisterPrinter(%s)", p->name);
+
++#ifdef HAVE_DNSSD
++ if (!DNSSDRef)
++ return;
++
+ /*
+ * Closing the socket deregisters the service
+ */
+@@ -2524,6 +2636,24 @@ dnssdDeregisterPrinter(
+ free(p->printer_txt);
+ p->printer_txt = NULL;
+ }
++#endif /* HAVE_DNSSD */
++
++#ifdef HAVE_AVAHI
++ if (p->avahi_group)
++ {
++ avahi_entry_group_reset (p->avahi_group);
++ avahi_entry_group_free (p->avahi_group);
++ p->avahi_group = NULL;
++
++ if (p->ipp_txt)
++ avahi_string_list_free (p->ipp_txt);
++
++ if (p->printer_txt)
++ avahi_string_list_free (p->printer_txt);
++
++ p->ipp_txt = p->printer_txt = NULL;
++ }
++#endif /* HAVE_AVAHI */
+
+ /*
+ * Remove the printer from the array of DNS-SD printers, then clear the
+@@ -2533,8 +2663,10 @@ dnssdDeregisterPrinter(
+ cupsArrayRemove(DNSSDPrinters, p);
+ cupsdClearString(&p->reg_name);
+ }
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+
++#ifdef HAVE_DNSSD
+ /*
+ * 'dnssdPackTxtRecord()' - Pack an array of key/value pairs into the
+ * TXT record format.
+@@ -2644,8 +2776,10 @@ dnssdRegisterCallback(
+ LastEvent |= CUPSD_EVENT_PRINTER_MODIFIED;
+ }
+ }
++#endif /* HAVE_DNSSD */
+
+
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ /*
+ * 'dnssdRegisterPrinter()' - Start sending broadcast information for a printer
+ * or update the broadcast contents.
+@@ -2654,20 +2788,40 @@ dnssdRegisterCallback(
+ static void
+ dnssdRegisterPrinter(cupsd_printer_t *p)/* I - Printer */
+ {
++#ifdef HAVE_DNSSD
+ DNSServiceErrorType se; /* dnssd errors */
+ char *ipp_txt, /* IPP TXT record buffer */
+ *printer_txt, /* LPD TXT record buffer */
+- name[1024], /* Service name */
+- *nameptr; /* Pointer into name */
++ name[1024]; /* Service name */
+ int ipp_len, /* IPP TXT record length */
+ printer_len, /* LPD TXT record length */
+ printer_port; /* LPD port number */
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ int ret; /* Error code */
++ AvahiStringList *ipp_txt, /* IPP TXT record */
++ *printer_txt; /* LPD TXT record */
++ char name[AVAHI_LABEL_MAX], /* Service name */
++ fullsubtype[AVAHI_LABEL_MAX]; /* Full subtype */
++ char *regtype_copy, /* Writeable copy of reg type */
++ *subtype, /* Current service sub type */
++ *nextsubtype; /* Next service sub type */
++#endif /* HAVE_AVAHI */
++ char *nameptr; /* Pointer into name */
+ const char *regtype; /* Registration type */
+
+
++#ifdef HAVE_DNSSD
++ if (!DNSSDRef)
++ return;
++
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdRegisterPrinter(%s) %s", p->name,
+ !p->ipp_ref ? "new" : "update");
+-
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdRegisterPrinter(%s) %s", p->name,
++ !p->avahi_group ? "new" : "update");
++#endif /* HAVE_AVAHI */
+ /*
+ * If per-printer sharing was just disabled make sure we're not
+ * registered before returning.
+@@ -2686,12 +2840,36 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
+ if (p->info && strlen(p->info) > 0)
+ {
+ if (DNSSDComputerName)
+- snprintf(name, sizeof(name), "%s @ %s", p->info, DNSSDComputerName);
++ {
++ /*
++ * Make sure there is room for at least 15 characters of
++ * DNSSDComputerName.
++ */
++
++ assert(sizeof(name) >= 15 + 4);
++ nameptr = name + strlcpy(name, p->info,
++ sizeof(name) - 4 -
++ strnlen(DNSSDComputerName, 15));
++ nameptr += strlcpy(nameptr, " @ ", sizeof(name) - (nameptr - name));
++ strlcpy(nameptr, DNSSDComputerName, sizeof(name) - (nameptr - name));
++ }
+ else
+ strlcpy(name, p->info, sizeof(name));
+ }
+ else if (DNSSDComputerName)
+- snprintf(name, sizeof(name), "%s @ %s", p->name, DNSSDComputerName);
++ {
++ /*
++ * Make sure there is room for at least 15 characters of
++ * DNSSDComputerName.
++ */
++
++ assert(sizeof(name) >= 15 + 4);
++ nameptr = name + strlcpy(name, p->info,
++ sizeof(name) - 4 -
++ strnlen(DNSSDComputerName, 15));
++ nameptr += strlcpy(nameptr, " @ ", sizeof(name) - (nameptr - name));
++ strlcpy(nameptr, DNSSDComputerName, sizeof(name) - (nameptr - name));
++ }
+ else
+ strlcpy(name, p->name, sizeof(name));
+
+@@ -2712,6 +2890,7 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
+ * Register IPP and (optionally) LPD...
+ */
+
++#ifdef HAVE_DNSSD
+ ipp_len = 0; /* anti-compiler-warning-code */
+ ipp_txt = dnssdBuildTxtRecord(&ipp_len, p, 0);
+
+@@ -2884,6 +3063,209 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
+
+ if (printer_txt)
+ free(printer_txt);
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ if (!AvahiCupsClient)
++ /*
++ * Client not running yet. The client callback will call us again later.
++ */
++ return;
++
++ ipp_txt = dnssdBuildTxtRecord(NULL, p, 0);
++ printer_txt = dnssdBuildTxtRecord(NULL, p, 1);
++ regtype = (p->type & CUPS_PRINTER_FAX) ? "_fax-ipp._tcp" : DNSSDRegType;
++
++ if (p->avahi_group && p->ipp_txt && ipp_txt &&
++ !avahi_string_list_equal (p->ipp_txt, ipp_txt))
++ {
++ /*
++ * Update the existing registration...
++ */
++
++ avahi_string_list_free (p->ipp_txt);
++
++ if (p->printer_txt)
++ avahi_string_list_free (p->printer_txt);
++
++ /*
++ * Update the service group entry.
++ */
++
++ regtype_copy = strdup (regtype);
++ subtype = strchr (regtype_copy, ',');
++ if (subtype)
++ *subtype = '\0';
++
++ cupsdLogMessage (CUPSD_LOG_DEBUG,
++ "Updating TXT record for %s (%s)", name, regtype_copy);
++ ret = avahi_entry_group_update_service_txt_strlst (p->avahi_group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0, name,
++ regtype_copy,
++ NULL, ipp_txt);
++ free (regtype_copy);
++
++ if (ret < 0)
++ goto update_failed;
++
++ p->ipp_txt = ipp_txt;
++ ipp_txt = NULL;
++
++ if (BrowseLocalProtocols & BROWSE_LPD)
++ {
++ ret = avahi_entry_group_update_service_txt_strlst (p->avahi_group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0, name,
++ "_printer._tcp", NULL,
++ printer_txt);
++ if (ret < 0)
++ goto update_failed;
++
++ p->printer_txt = printer_txt;
++ printer_txt = NULL;
++ }
++
++ ret = avahi_entry_group_commit (p->avahi_group);
++ if (ret < 0)
++ {
++ update_failed:
++ cupsdLogMessage (CUPSD_LOG_ERROR,
++ "Failed to update TXT record for %s: %d",
++ name, ret);
++ avahi_entry_group_reset (p->avahi_group);
++ avahi_entry_group_free (p->avahi_group);
++ p->avahi_group = NULL;
++ ipp_txt = p->ipp_txt;
++ p->ipp_txt = NULL;
++ }
++ }
++
++ if (!p->avahi_group)
++ {
++ /*
++ * Initial registration. Use the _fax subtype for fax queues...
++ */
++
++ p->avahi_group = avahi_entry_group_new (AvahiCupsClient,
++ avahi_entry_group_cb,
++ p);
++
++ cupsdLogMessage(CUPSD_LOG_DEBUG,
++ "Registering Avahi printer %s with name \"%s\" and "
++ "type \"%s\"", p->name, name, regtype);
++
++ if (!p->avahi_group)
++ {
++ ret = 0;
++ goto add_failed;
++ }
++
++ /*
++ * Add each service type (DNSSDRegType may contain several,
++ * separated by commas).
++ */
++
++ subtype = regtype_copy = strdup (regtype);
++ while (subtype && *subtype)
++ {
++ nextsubtype = strchr (subtype, ',');
++ if (nextsubtype)
++ *nextsubtype++ = '\0';
++
++ if (subtype == regtype_copy)
++ {
++ /*
++ * Main type entry.
++ */
++
++ cupsdLogMessage (CUPSD_LOG_DEBUG,
++ "Adding TXT record for %s (%s)", name, regtype_copy);
++ ret = avahi_entry_group_add_service_strlst (p->avahi_group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0, name, regtype_copy,
++ NULL, NULL,
++ DNSSDPort,
++ ipp_txt);
++ }
++ else
++ {
++ /*
++ * Sub-type entry.
++ */
++
++ snprintf (fullsubtype, sizeof(fullsubtype),
++ "%s._sub.%s", subtype, regtype_copy);
++ cupsdLogMessage (CUPSD_LOG_DEBUG,
++ "Adding TXT record for %s (%s)", name, fullsubtype);
++ ret = avahi_entry_group_add_service_subtype (p->avahi_group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0, name,
++ regtype_copy,
++ NULL, fullsubtype);
++ }
++
++ if (ret < 0)
++ {
++ free (regtype_copy);
++ goto add_failed;
++ }
++
++ subtype = nextsubtype;
++ }
++
++ free (regtype_copy);
++ p->ipp_txt = ipp_txt;
++ ipp_txt = NULL;
++
++ if (BrowseLocalProtocols & BROWSE_LPD)
++ {
++ cupsdLogMessage(CUPSD_LOG_DEBUG,
++ "Registering Avahi printer %s with name \"%s\" and "
++ "type \"_printer._tcp\"", p->name, name);
++
++ ret = avahi_entry_group_add_service_strlst (p->avahi_group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0, name,
++ "_printer._tcp", NULL, NULL,
++ 515,
++ printer_txt);
++ if (ret < 0)
++ goto add_failed;
++
++ p->printer_txt = printer_txt;
++ printer_txt = NULL;
++ }
++
++ ret = avahi_entry_group_commit (p->avahi_group);
++
++ if (ret < 0)
++ {
++ add_failed:
++ cupsdLogMessage (CUPSD_LOG_ERROR,
++ "Failed to add Avahi entry for %s: %d",
++ name, ret);
++ if (p->avahi_group)
++ {
++ avahi_entry_group_reset (p->avahi_group);
++ avahi_entry_group_free (p->avahi_group);
++ p->avahi_group = NULL;
++ }
++ ipp_txt = p->ipp_txt;
++ p->ipp_txt = NULL;
++ }
++ }
++
++ if (ipp_txt)
++ avahi_string_list_free (ipp_txt);
++
++ if (printer_txt)
++ avahi_string_list_free (printer_txt);
++#endif /* HAVE_AVAHI */
+ }
+
+
+@@ -2896,6 +3278,10 @@ dnssdStop(void)
+ {
+ cupsd_printer_t *p; /* Current printer */
+
++#ifdef HAVE_DNSSD
++ if (!DNSSDRef)
++ return;
++#endif /* HAVE_DNSSD */
+
+ /*
+ * De-register the individual printers
+@@ -2910,12 +3296,23 @@ dnssdStop(void)
+ * Shutdown the rest of the service refs...
+ */
+
++#ifdef HAVE_DNSSD
+ if (WebIFRef)
+ {
+ DNSServiceRefDeallocate(WebIFRef);
+ WebIFRef = NULL;
+ }
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ if (AvahiWebIFGroup)
++ {
++ avahi_entry_group_reset (AvahiWebIFGroup);
++ avahi_entry_group_free (AvahiWebIFGroup);
++ AvahiWebIFGroup = NULL;
++ }
++#endif /* HAVE_AVAHI */
+
++#ifdef HAVE_DNSSD
+ if (RemoteRef)
+ {
+ DNSServiceRefDeallocate(RemoteRef);
+@@ -2926,14 +3323,17 @@ dnssdStop(void)
+
+ DNSServiceRefDeallocate(DNSSDRef);
+ DNSSDRef = NULL;
++#endif /* HAVE_DNSSD */
+
+ cupsArrayDelete(DNSSDPrinters);
+ DNSSDPrinters = NULL;
+
+ DNSSDPort = 0;
+ }
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+
++#ifdef HAVE_DNSSD
+ /*
+ * 'dnssdUpdate()' - Handle DNS-SD queries.
+ */
+@@ -2955,6 +3355,153 @@ dnssdUpdate(void)
+ #endif /* HAVE_DNSSD */
+
+
++#ifdef HAVE_AVAHI
++/*
++ * 'avahiPackTxtRecord()' - Pack an array of key/value pairs into an
++ * AvahiStringList.
++ */
++
++static AvahiStringList * /* O - new string list */
++avahiPackTxtRecord(char *keyvalue[][2], /* I - Table of key value pairs */
++ int count) /* I - Number of items in table */
++{
++ AvahiStringList *strlst = NULL;
++ char **elements;
++ size_t len;
++ int i = 0;
++
++ elements = malloc ((1 + count) * sizeof (char *));
++ if (!elements)
++ goto cleanup;
++
++ for (i = 0; i < count; i++)
++ {
++ len = (1 + strlen (keyvalue[i][0]) +
++ (keyvalue[i][1] ? 1 + strlen (keyvalue[i][1]) : 1));
++ elements[i] = malloc (len * sizeof (char));
++ if (!elements[i])
++ goto cleanup;
++
++ snprintf (elements[i], len, "%s=%s", keyvalue[i][0], keyvalue[i][1]);
++ }
++
++ strlst = avahi_string_list_new_from_array ((const char **) elements, count);
++
++cleanup:
++ while (--i >= 0)
++ free (elements[i]);
++
++ free (elements);
++ return (strlst);
++}
++
++
++/*
++ * 'avahi_entry_group_cb()' - Avahi entry group callback function.
++ */
++static void
++avahi_entry_group_cb (AvahiEntryGroup *group,
++ AvahiEntryGroupState state,
++ void *userdata)
++{
++ char *name;
++
++ if (userdata)
++ name = ((cupsd_printer_t *) userdata)->reg_name;
++ else
++ name = "CUPS web interface";
++
++ switch (state)
++ {
++ case AVAHI_ENTRY_GROUP_UNCOMMITED:
++ case AVAHI_ENTRY_GROUP_REGISTERING:
++ break;
++
++ case AVAHI_ENTRY_GROUP_ESTABLISHED:
++ cupsdLogMessage (CUPSD_LOG_DEBUG,
++ "Avahi entry group established for %s", name);
++ break;
++
++ default:
++ cupsdLogMessage (CUPSD_LOG_DEBUG,
++ "Avahi entry group %s has state %d",
++ name, state);
++ break;
++ }
++}
++
++
++/*
++ * 'avahi_client_cb()' - Avahi client callback function.
++ */
++static void
++avahi_client_cb (AvahiClient *client,
++ AvahiClientState state,
++ void *userdata)
++{
++ cupsd_printer_t *printer;
++ switch (state)
++ {
++ case AVAHI_CLIENT_S_RUNNING:
++ /*
++ * Avahi client started successfully.
++ */
++ AvahiCupsClient = client;
++ AvahiCupsClientConnecting = 0;
++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client started");
++
++ cupsdUpdateDNSSDName ();
++
++ for (printer = (cupsd_printer_t *)cupsArrayFirst(Printers);
++ printer;
++ printer = (cupsd_printer_t *)cupsArrayNext(Printers))
++ if (Browsing && (BrowseLocalProtocols & BROWSE_DNSSD) &&
++ (!(printer->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT |
++ CUPS_PRINTER_SCANNER))) && printer->shared)
++ dnssdRegisterPrinter (printer);
++
++ break;
++
++ case AVAHI_CLIENT_CONNECTING:
++ /*
++ * No Avahi daemon, client is waiting.
++ */
++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client connecting");
++ break;
++
++ case AVAHI_CLIENT_S_REGISTERING:
++ /*
++ * Not yet registered.
++ */
++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client registering");
++ break;
++
++ case AVAHI_CLIENT_FAILURE:
++ /*
++ * Avahi client failed, close it to allow a clean restart.
++ */
++ cupsdLogMessage (CUPSD_LOG_ERROR,
++ "Avahi client failed, "
++ "closing client to allow a clean restart");
++
++ for (printer = (cupsd_printer_t *)cupsArrayFirst(Printers);
++ printer;
++ printer = (cupsd_printer_t *)cupsArrayNext(Printers))
++ dnssdDeregisterPrinter (printer);
++
++ avahi_client_free(client);
++ AvahiCupsClientConnecting = 0;
++ AvahiCupsClient = NULL;
++
++ break;
++
++ default:
++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client state: %d", state);
++ }
++}
++#endif /* HAVE_AVAHI */
++
++
+ /*
+ * 'get_auth_info_required()' - Get the auth-info-required value to advertise.
+ */
+diff -up cups-1.5.2/scheduler/dirsvc.h.avahi-5-services cups-1.5.2/scheduler/dirsvc.h
+--- cups-1.5.2/scheduler/dirsvc.h.avahi-5-services 2011-03-21 02:12:14.000000000 +0000
++++ cups-1.5.2/scheduler/dirsvc.h 2012-03-14 15:08:25.711611808 +0000
+@@ -31,6 +31,10 @@
+ # endif /* HAVE_LDAP_SSL_H */
+ #endif /* HAVE_LDAP */
+
++#ifdef HAVE_AVAHI
++# include <avahi-client/publish.h>
++#endif /* HAVE_AVAHI */
++
+ /*
+ * Browse protocols...
+ */
+@@ -131,19 +135,22 @@ VAR int PollPipe VALUE(0);
+ VAR cupsd_statbuf_t *PollStatusBuffer VALUE(NULL);
+ /* Status buffer for pollers */
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ VAR char *DNSSDComputerName VALUE(NULL),
+ /* Computer/server name */
+ *DNSSDHostName VALUE(NULL),
+ /* Hostname */
+ *DNSSDRegType VALUE(NULL);
+ /* Bonjour registration type */
+-VAR cups_array_t *DNSSDAlias VALUE(NULL);
+- /* List of dynamic ServerAlias's */
+ VAR int DNSSDPort VALUE(0);
+ /* Port number to register */
+ VAR cups_array_t *DNSSDPrinters VALUE(NULL);
+ /* Printers we have registered */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
++
++#ifdef HAVE_DNSSD
++VAR cups_array_t *DNSSDAlias VALUE(NULL);
++ /* List of dynamic ServerAlias's */
+ VAR DNSServiceRef DNSSDRef VALUE(NULL),
+ /* Master DNS-SD service reference */
+ WebIFRef VALUE(NULL),
+@@ -152,6 +159,17 @@ VAR DNSServiceRef DNSSDRef VALUE(NULL),
+ /* Remote printer browse reference */
+ #endif /* HAVE_DNSSD */
+
++#ifdef HAVE_AVAHI
++VAR AvahiCupsPoll *AvahiCupsPollHandle VALUE(NULL);
++ /* AvahiCupsPoll object */
++VAR AvahiClient *AvahiCupsClient VALUE(NULL);
++ /* AvahiClient object */
++VAR int AvahiCupsClientConnecting VALUE(0);
++ /* Is AvahiClient object connecting? */
++VAR AvahiEntryGroup *AvahiWebIFGroup VALUE(NULL);
++ /* Web interface entry group */
++#endif /* HAVE_AVAHI */
++
+ #ifdef HAVE_LIBSLP
+ VAR SLPHandle BrowseSLPHandle VALUE(NULL);
+ /* SLP API handle */
+@@ -195,13 +213,14 @@ extern void cupsdRegisterPrinter(cupsd_p
+ extern void cupsdRestartPolling(void);
+ extern void cupsdSaveRemoteCache(void);
+ extern void cupsdSendBrowseList(void);
++extern void cupsdStartAvahiClient(void);
+ extern void cupsdStartBrowsing(void);
+ extern void cupsdStartPolling(void);
+ extern void cupsdStopBrowsing(void);
+ extern void cupsdStopPolling(void);
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ extern void cupsdUpdateDNSSDName(void);
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+ #ifdef HAVE_LDAP
+ extern void cupsdUpdateLDAPBrowse(void);
+ #endif /* HAVE_LDAP */
+diff -up cups-1.5.2/scheduler/ipp.c.avahi-5-services cups-1.5.2/scheduler/ipp.c
+--- cups-1.5.2/scheduler/ipp.c.avahi-5-services 2012-03-14 15:04:17.665305560 +0000
++++ cups-1.5.2/scheduler/ipp.c 2012-03-14 15:08:25.715611813 +0000
+@@ -6099,7 +6099,7 @@ copy_printer_attrs(
+ ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time",
+ ippTimeToDate(curtime));
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ if (!ra || cupsArrayFind(ra, "printer-dns-sd-name"))
+ {
+ if (printer->reg_name)
+@@ -6109,7 +6109,7 @@ copy_printer_attrs(
+ ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE,
+ "printer-dns-sd-name", 0);
+ }
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ if (!ra || cupsArrayFind(ra, "printer-error-policy"))
+ ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME,
+diff -up cups-1.5.2/scheduler/main.c.avahi-5-services cups-1.5.2/scheduler/main.c
+--- cups-1.5.2/scheduler/main.c.avahi-5-services 2012-03-14 15:06:36.511476986 +0000
++++ cups-1.5.2/scheduler/main.c 2012-03-14 15:08:25.718611817 +0000
+@@ -120,6 +120,10 @@ main(int argc, /* I - Number of comm
+ cupsd_listener_t *lis; /* Current listener */
+ time_t current_time, /* Current time */
+ activity, /* Client activity timer */
++#ifdef HAVE_AVAHI
++ avahi_client_time, /* Time for next Avahi client
++ check */
++#endif /* HAVE_AVAHI */
+ browse_time, /* Next browse send time */
+ senddoc_time, /* Send-Document time */
+ expire_time, /* Subscription expire time */
+@@ -672,6 +676,9 @@ main(int argc, /* I - Number of comm
+ */
+
+ current_time = time(NULL);
++#ifdef HAVE_AVAHI
++ avahi_client_time = current_time;
++#endif /* HAVE_AVAHI */
+ browse_time = current_time;
+ event_time = current_time;
+ expire_time = current_time;
+@@ -894,6 +901,16 @@ main(int argc, /* I - Number of comm
+ tmo = cupsdNextTimeout (&tmo_delay);
+ if (tmo && tmo_delay == 0)
+ cupsdRunTimeout (tmo);
++
++ /*
++ * Try to restart the Avahi client every 10 seconds if needed...
++ */
++
++ if ((current_time - avahi_client_time) >= 10)
++ {
++ avahi_client_time = current_time;
++ cupsdStartAvahiClient();
++ }
+ #endif /* HAVE_AVAHI */
+
+ #ifndef __APPLE__
+diff -up cups-1.5.2/scheduler/printers.c.avahi-5-services cups-1.5.2/scheduler/printers.c
+--- cups-1.5.2/scheduler/printers.c.avahi-5-services 2012-03-14 15:04:17.646305537 +0000
++++ cups-1.5.2/scheduler/printers.c 2012-03-14 15:08:25.720611819 +0000
+@@ -883,9 +883,9 @@ cupsdDeletePrinter(
+ cupsdClearString(&p->alert);
+ cupsdClearString(&p->alert_description);
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ cupsdClearString(&p->pdl);
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+
+ cupsArrayDelete(p->filetypes);
+
+@@ -3787,7 +3787,7 @@ add_printer_formats(cupsd_printer_t *p)
+ attr->values[i].string.text = _cupsStrAlloc(mimetype);
+ }
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ {
+ char pdl[1024]; /* Buffer to build pdl list */
+ mime_filter_t *filter; /* MIME filter looping var */
+@@ -3843,7 +3843,7 @@ add_printer_formats(cupsd_printer_t *p)
+
+ cupsdSetString(&p->pdl, pdl);
+ }
+-#endif /* HAVE_DNSSD */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
+ }
+
+
+diff -up cups-1.5.2/scheduler/printers.h.avahi-5-services cups-1.5.2/scheduler/printers.h
+--- cups-1.5.2/scheduler/printers.h.avahi-5-services 2011-03-18 18:42:46.000000000 +0000
++++ cups-1.5.2/scheduler/printers.h 2012-03-14 15:08:25.721611820 +0000
+@@ -16,6 +16,9 @@
+ #ifdef HAVE_DNSSD
+ # include <dns_sd.h>
+ #endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++# include "avahi.h"
++#endif /* HAVE_AVAHI */
+ #include <cups/pwg-private.h>
+
+
+@@ -95,16 +98,23 @@ struct cupsd_printer_s
+ time_t marker_time; /* Last time marker attributes were updated */
+ _ppd_cache_t *pc; /* PPD cache and mapping data */
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ char *reg_name, /* Name used for service registration */
+- *pdl, /* pdl value for TXT record */
+- *ipp_txt, /* IPP TXT record contents */
++ *pdl; /* pdl value for TXT record */
++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */
++#ifdef HAVE_DNSSD
++ char *ipp_txt, /* IPP TXT record contents */
+ *printer_txt; /* LPD TXT record contents */
+ int ipp_len, /* IPP TXT record length */
+ printer_len; /* LPD TXT record length */
+ DNSServiceRef ipp_ref, /* Reference for _ipp._tcp,_cups */
+ printer_ref; /* Reference for _printer._tcp */
+ #endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ AvahiStringList *ipp_txt, /* IPP TXT record */
++ *printer_txt; /* LPD TXT record */
++ AvahiEntryGroup *avahi_group; /* Avahi entry group */
++#endif /* HAVE_AVAHI */
+ };
+
+
diff --git a/abs/extra/cups/cups-no-export-ssllibs.patch b/abs/extra/cups/cups-no-export-ssllibs.patch
new file mode 100644
index 0000000..9be3c81
--- /dev/null
+++ b/abs/extra/cups/cups-no-export-ssllibs.patch
@@ -0,0 +1,12 @@
+diff -up cups-1.5b1/config-scripts/cups-ssl.m4.no-export-ssllibs cups-1.5b1/config-scripts/cups-ssl.m4
+--- cups-1.5b1/config-scripts/cups-ssl.m4.no-export-ssllibs 2011-05-11 02:52:08.000000000 +0200
++++ cups-1.5b1/config-scripts/cups-ssl.m4 2011-05-23 17:47:27.000000000 +0200
+@@ -164,7 +164,7 @@ AC_SUBST(IPPALIASES)
+ AC_SUBST(SSLFLAGS)
+ AC_SUBST(SSLLIBS)
+
+-EXPORT_SSLLIBS="$SSLLIBS"
++EXPORT_SSLLIBS=""
+ AC_SUBST(EXPORT_SSLLIBS)
+
+
diff --git a/abs/extra/cups/cups-no-gcrypt.patch b/abs/extra/cups/cups-no-gcrypt.patch
new file mode 100644
index 0000000..42f71d0
--- /dev/null
+++ b/abs/extra/cups/cups-no-gcrypt.patch
@@ -0,0 +1,38 @@
+diff -ruN cups-1.4.7.orig//config-scripts/cups-ssl.m4 cups-1.4.7/config-scripts/cups-ssl.m4
+--- cups-1.5.0.orig//config-scripts/cups-ssl.m4 2011-01-11 08:05:58.000000000 +0100
++++ cups-1.5.0/config-scripts/cups-ssl.m4 2011-08-02 10:44:26.011047900 +0200
+@@ -96,7 +96,6 @@
+ dnl Then look for GNU TLS...
+ if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then
+ AC_PATH_PROG(LIBGNUTLSCONFIG,libgnutls-config)
+- AC_PATH_PROG(LIBGCRYPTCONFIG,libgcrypt-config)
+ if $PKGCONFIG --exists gnutls; then
+ have_ssl=1
+ SSLLIBS=`$PKGCONFIG --libs gnutls`
+@@ -110,16 +109,6 @@
+ AC_DEFINE(HAVE_SSL)
+ AC_DEFINE(HAVE_GNUTLS)
+ fi
+-
+- if test $have_ssl = 1; then
+- if $PKGCONFIG --exists gcrypt; then
+- SSLLIBS="$SSLLIBS `$PKGCONFIG --libs gcrypt`"
+- SSLFLAGS="$SSLFLAGS `$PKGCONFIG --cflags gcrypt`"
+- elif test "x$LIBGCRYPTCONFIG" != x; then
+- SSLLIBS="$SSLLIBS `$LIBGCRYPTCONFIG --libs`"
+- SSLFLAGS="$SSLFLAGS `$LIBGCRYPTCONFIG --cflags`"
+- fi
+- fi
+ fi
+
+ dnl Check for the OpenSSL library last...
+--- cups-1.5.0.orig//cups/http-private.h 2011-01-22 01:07:22.000000000 +0100
++++ cups-1.5.0/cups/http-private.h 2011-08-02 10:42:43.341604107 +0200
+@@ -93,7 +93,6 @@
+ # elif defined HAVE_GNUTLS
+ # include <gnutls/gnutls.h>
+ # include <gnutls/x509.h>
+-# include <gcrypt.h>
+ # elif defined(HAVE_CDSASSL)
+ # include <CoreFoundation/CoreFoundation.h>
+ # include <Security/Security.h>
diff --git a/abs/extra/cups/cups-no-gzip-man.patch b/abs/extra/cups/cups-no-gzip-man.patch
new file mode 100644
index 0000000..6786c44
--- /dev/null
+++ b/abs/extra/cups/cups-no-gzip-man.patch
@@ -0,0 +1,18 @@
+diff -up cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man cups-1.5b1/config-scripts/cups-manpages.m4
+--- cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man 2011-05-12 07:21:56.000000000 +0200
++++ cups-1.5b1/config-scripts/cups-manpages.m4 2011-05-23 17:25:50.000000000 +0200
+@@ -69,10 +69,10 @@ case "$uname" in
+ ;;
+ Linux* | GNU* | Darwin*)
+ # Linux, GNU Hurd, and Mac OS X
+- MAN1EXT=1.gz
+- MAN5EXT=5.gz
+- MAN7EXT=7.gz
+- MAN8EXT=8.gz
++ MAN1EXT=1
++ MAN5EXT=5
++ MAN7EXT=7
++ MAN8EXT=8
+ MAN8DIR=8
+ ;;
+ *)
diff --git a/abs/extra/cups/cups-no-gzip-man.patch.16 b/abs/extra/cups/cups-no-gzip-man.patch.16
new file mode 100644
index 0000000..69899b9
--- /dev/null
+++ b/abs/extra/cups/cups-no-gzip-man.patch.16
@@ -0,0 +1,18 @@
+diff -up cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man cups-1.5b1/config-scripts/cups-manpages.m4
+--- cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man 2011-05-12 07:21:56.000000000 +0200
++++ cups-1.5b1/config-scripts/cups-manpages.m4 2011-05-23 17:25:50.000000000 +0200
+@@ -69,10 +69,10 @@ case "$uname" in
+ ;;
+ Linux* | GNU* | Darwin*)
+ # Linux, GNU Hurd, and OS X
+- MAN1EXT=1.gz
+- MAN5EXT=5.gz
+- MAN7EXT=7.gz
+- MAN8EXT=8.gz
++ MAN1EXT=1
++ MAN5EXT=5
++ MAN7EXT=7
++ MAN8EXT=8
+ MAN8DIR=8
+ ;;
+ *)
diff --git a/abs/extra/cups/cups-systemd-socket.patch b/abs/extra/cups/cups-systemd-socket.patch
new file mode 100644
index 0000000..09d17d4
--- /dev/null
+++ b/abs/extra/cups/cups-systemd-socket.patch
@@ -0,0 +1,527 @@
+diff -up cups-1.5.2/config.h.in.systemd-socket cups-1.5.2/config.h.in
+--- cups-1.5.2/config.h.in.systemd-socket 2012-03-16 14:50:57.089449755 +0000
++++ cups-1.5.2/config.h.in 2012-03-16 14:50:57.146449787 +0000
+@@ -503,6 +503,13 @@
+
+
+ /*
++ * Do we have systemd support?
++ */
++
++#undef HAVE_SYSTEMD
++
++
++/*
+ * Various scripting languages...
+ */
+
+diff -up cups-1.5.2/config-scripts/cups-systemd.m4.systemd-socket cups-1.5.2/config-scripts/cups-systemd.m4
+--- cups-1.5.2/config-scripts/cups-systemd.m4.systemd-socket 2012-03-16 14:50:57.146449787 +0000
++++ cups-1.5.2/config-scripts/cups-systemd.m4 2012-03-16 14:50:57.146449787 +0000
+@@ -0,0 +1,36 @@
++dnl
++dnl "$Id$"
++dnl
++dnl systemd stuff for CUPS.
++
++dnl Find whether systemd is available
++
++SDLIBS=""
++AC_ARG_WITH([systemdsystemunitdir],
++ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
++ [], [with_systemdsystemunitdir=$($PKGCONFIG --variable=systemdsystemunitdir systemd)])
++if test "x$with_systemdsystemunitdir" != xno; then
++ AC_MSG_CHECKING(for libsystemd-daemon)
++ if $PKGCONFIG --exists libsystemd-daemon; then
++ AC_MSG_RESULT(yes)
++ SDCFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
++ SDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
++ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
++ AC_DEFINE(HAVE_SYSTEMD)
++ else
++ AC_MSG_RESULT(no)
++ fi
++fi
++
++if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then
++ SYSTEMD_UNITS="cups.service cups.socket cups.path"
++else
++ SYSTEMD_UNITS=""
++fi
++
++AC_SUBST(SYSTEMD_UNITS)
++AC_SUBST(SDLIBS)
++
++dnl
++dnl "$Id$"
++dnl
+diff -up cups-1.5.2/configure.in.systemd-socket cups-1.5.2/configure.in
+--- cups-1.5.2/configure.in.systemd-socket 2011-08-31 02:36:33.000000000 +0100
++++ cups-1.5.2/configure.in 2012-03-16 14:50:57.146449787 +0000
+@@ -37,6 +37,7 @@ sinclude(config-scripts/cups-pam.m4)
+ sinclude(config-scripts/cups-largefile.m4)
+ sinclude(config-scripts/cups-dnssd.m4)
+ sinclude(config-scripts/cups-launchd.m4)
++sinclude(config-scripts/cups-systemd.m4)
+ sinclude(config-scripts/cups-defaults.m4)
+ sinclude(config-scripts/cups-pdf.m4)
+ sinclude(config-scripts/cups-scripting.m4)
+@@ -71,6 +72,9 @@ AC_OUTPUT(Makedefs
+ conf/snmp.conf
+ cups-config
+ data/testprint
++ data/cups.service
++ data/cups.socket
++ data/cups.path
+ desktop/cups.desktop
+ doc/help/ref-cupsd-conf.html
+ doc/help/standard.html
+diff -up cups-1.5.2/cups/usersys.c.systemd-socket cups-1.5.2/cups/usersys.c
+--- cups-1.5.2/cups/usersys.c.systemd-socket 2012-03-16 14:50:57.054449734 +0000
++++ cups-1.5.2/cups/usersys.c 2012-03-16 14:50:57.148449788 +0000
+@@ -778,7 +778,7 @@ cups_read_client_conf(
+ struct stat sockinfo; /* Domain socket information */
+
+ if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) &&
+- (sockinfo.st_mode & S_IRWXO) == S_IRWXO)
++ (sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH))
+ cups_server = CUPS_DEFAULT_DOMAINSOCKET;
+ else
+ #endif /* CUPS_DEFAULT_DOMAINSOCKET */
+diff -up cups-1.5.2/data/cups.path.in.systemd-socket cups-1.5.2/data/cups.path.in
+--- cups-1.5.2/data/cups.path.in.systemd-socket 2012-03-16 14:50:57.148449788 +0000
++++ cups-1.5.2/data/cups.path.in 2012-03-16 14:50:57.148449788 +0000
+@@ -0,0 +1,8 @@
++[Unit]
++Description=CUPS Printer Service Spool
++
++[Path]
++PathExistsGlob=@CUPS_REQUESTS@/d*
++
++[Install]
++WantedBy=multi-user.target
+diff -up cups-1.5.2/data/cups.service.in.systemd-socket cups-1.5.2/data/cups.service.in
+--- cups-1.5.2/data/cups.service.in.systemd-socket 2012-03-16 14:50:57.149449788 +0000
++++ cups-1.5.2/data/cups.service.in 2012-03-16 14:50:57.149449788 +0000
+@@ -0,0 +1,10 @@
++[Unit]
++Description=CUPS Printing Service
++
++[Service]
++ExecStart=@sbindir@/cupsd -f
++PrivateTmp=true
++
++[Install]
++Also=cups.socket cups.path
++WantedBy=printer.target
+diff -up cups-1.5.2/data/cups.socket.in.systemd-socket cups-1.5.2/data/cups.socket.in
+--- cups-1.5.2/data/cups.socket.in.systemd-socket 2012-03-16 14:50:57.150449788 +0000
++++ cups-1.5.2/data/cups.socket.in 2012-03-16 14:50:57.150449788 +0000
+@@ -0,0 +1,11 @@
++[Unit]
++Description=CUPS Printing Service Sockets
++
++[Socket]
++ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
++ListenStream=631
++ListenDatagram=0.0.0.0:631
++BindIPv6Only=ipv6-only
++
++[Install]
++WantedBy=sockets.target
+diff -up cups-1.5.2/data/Makefile.systemd-socket cups-1.5.2/data/Makefile
+--- cups-1.5.2/data/Makefile.systemd-socket 2011-05-12 06:21:56.000000000 +0100
++++ cups-1.5.2/data/Makefile 2012-03-16 14:50:57.151449789 +0000
+@@ -112,6 +112,12 @@ install-data:
+ $(INSTALL_DATA) $$file $(DATADIR)/ppdc; \
+ done
+ $(INSTALL_DIR) -m 755 $(DATADIR)/profiles
++ if test "x$(SYSTEMD_UNITS)" != "x" ; then \
++ $(INSTALL_DIR) -m 755 $(SYSTEMDUNITDIR); \
++ for file in $(SYSTEMD_UNITS); do \
++ $(INSTALL_DATA) $$file $(SYSTEMDUNITDIR); \
++ done; \
++ fi
+
+
+ #
+@@ -159,6 +165,9 @@ uninstall:
+ -$(RMDIR) $(DATADIR)/charsets
+ -$(RMDIR) $(DATADIR)/banners
+ -$(RMDIR) $(DATADIR)
++ for file in $(SYSTEMD_UNITS); do \
++ $(RM) $(SYSTEMDUNITDIR)/$$file; \
++ done
+
+
+ #
+diff -up cups-1.5.2/Makedefs.in.systemd-socket cups-1.5.2/Makedefs.in
+--- cups-1.5.2/Makedefs.in.systemd-socket 2012-03-16 14:50:57.081449751 +0000
++++ cups-1.5.2/Makedefs.in 2012-03-16 14:50:57.152449790 +0000
+@@ -143,6 +143,7 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@
+ CXXLIBS = @CXXLIBS@
+ DBUS_NOTIFIER = @DBUS_NOTIFIER@
+ DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@
++SYSTEMD_UNITS = @SYSTEMD_UNITS@
+ DNSSD_BACKEND = @DNSSD_BACKEND@
+ DSOFLAGS = -L../cups @DSOFLAGS@
+ DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
+@@ -151,6 +152,7 @@ FONTS = @FONTS@
+ IMGLIBS = @IMGLIBS@
+ IMGFILTERS = @IMGFILTERS@
+ LAUNCHDLIBS = @LAUNCHDLIBS@
++SDLIBS = @SDLIBS@
+ LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
+ -L../scheduler @LDARCHFLAGS@ \
+ @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
+@@ -267,6 +269,7 @@ PAMFILE = @PAMFILE@
+
+ DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@
+ DBUSDIR = @DBUSDIR@
++SYSTEMDUNITDIR = $(BUILDROOT)@systemdsystemunitdir@
+
+
+ #
+diff -up cups-1.5.2/scheduler/client.h.systemd-socket cups-1.5.2/scheduler/client.h
+--- cups-1.5.2/scheduler/client.h.systemd-socket 2011-03-25 21:25:38.000000000 +0000
++++ cups-1.5.2/scheduler/client.h 2012-03-16 14:50:57.153449791 +0000
+@@ -75,6 +75,9 @@ typedef struct
+ int fd; /* File descriptor for this server */
+ http_addr_t address; /* Bind address of socket */
+ http_encryption_t encryption; /* To encrypt or not to encrypt... */
++#ifdef HAVE_SYSTEMD
++ int is_systemd; /* Is this a systemd socket? */
++#endif /* HAVE_SYSTEMD */
+ } cupsd_listener_t;
+
+
+diff -up cups-1.5.2/scheduler/dirsvc.c.systemd-socket cups-1.5.2/scheduler/dirsvc.c
+--- cups-1.5.2/scheduler/dirsvc.c.systemd-socket 2012-03-16 14:50:57.112449768 +0000
++++ cups-1.5.2/scheduler/dirsvc.c 2012-03-16 14:50:57.155449792 +0000
+@@ -1512,7 +1512,7 @@ cupsdStartBrowsing(void)
+ }
+ }
+
+- if (BrowseSocket >= 0)
++ if (BrowseSocket >= 0 && !BrowseSocketIsSystemd)
+ {
+ /*
+ * Bind the socket to browse port...
+@@ -1556,13 +1556,17 @@ cupsdStartBrowsing(void)
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to set broadcast mode - %s.",
+ strerror(errno));
+
++ if (!BrowseSocketIsSystemd)
++ {
+ #ifdef WIN32
+- closesocket(BrowseSocket);
++ closesocket(BrowseSocket);
+ #else
+- close(BrowseSocket);
++ close(BrowseSocket);
+ #endif /* WIN32 */
+
+- BrowseSocket = -1;
++ BrowseSocket = -1;
++ }
++
+ BrowseLocalProtocols &= ~BROWSE_CUPS;
+ BrowseRemoteProtocols &= ~BROWSE_CUPS;
+
+@@ -1885,15 +1889,22 @@ cupsdStopBrowsing(void)
+ if (((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_CUPS) &&
+ BrowseSocket >= 0)
+ {
+- /*
+- * Close the socket and remove it from the input selection set.
+- */
++ if (!BrowseSocketIsSystemd)
++ {
++ /*
++ * Close the socket.
++ */
+
+ #ifdef WIN32
+- closesocket(BrowseSocket);
++ closesocket(BrowseSocket);
+ #else
+- close(BrowseSocket);
++ close(BrowseSocket);
+ #endif /* WIN32 */
++ }
++
++ /*
++ * Remove it from the input selection set.
++ */
+
+ cupsdRemoveSelect(BrowseSocket);
+ BrowseSocket = -1;
+@@ -5693,11 +5704,14 @@ update_cups_browse(void)
+ strerror(errno));
+ cupsdLogMessage(CUPSD_LOG_ERROR, "CUPS browsing turned off.");
+
++ if (!BrowseSocketIsSystemd)
++ {
+ #ifdef WIN32
+- closesocket(BrowseSocket);
++ closesocket(BrowseSocket);
+ #else
+- close(BrowseSocket);
++ close(BrowseSocket);
+ #endif /* WIN32 */
++ }
+
+ cupsdRemoveSelect(BrowseSocket);
+ BrowseSocket = -1;
+diff -up cups-1.5.2/scheduler/dirsvc.h.systemd-socket cups-1.5.2/scheduler/dirsvc.h
+--- cups-1.5.2/scheduler/dirsvc.h.systemd-socket 2012-03-16 14:50:57.113449769 +0000
++++ cups-1.5.2/scheduler/dirsvc.h 2012-03-16 14:50:57.157449792 +0000
+@@ -100,6 +100,8 @@ VAR int Browsing VALUE(TRUE),
+ /* Short names for remote printers? */
+ BrowseSocket VALUE(-1),
+ /* Socket for browsing */
++ BrowseSocketIsSystemd VALUE(0),
++ /* BrowseSocket is systemd-provided? */
+ BrowsePort VALUE(IPP_PORT),
+ /* Port number for broadcasts */
+ BrowseInterval VALUE(DEFAULT_INTERVAL),
+diff -up cups-1.5.2/scheduler/listen.c.systemd-socket cups-1.5.2/scheduler/listen.c
+--- cups-1.5.2/scheduler/listen.c.systemd-socket 2011-04-16 00:38:13.000000000 +0100
++++ cups-1.5.2/scheduler/listen.c 2012-03-16 14:50:57.158449792 +0000
+@@ -401,7 +401,11 @@ cupsdStopListening(void)
+ lis;
+ lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
+ {
+- if (lis->fd != -1)
++ if (lis->fd != -1
++#ifdef HAVE_SYSTEMD
++ && !lis->is_systemd
++#endif /* HAVE_SYSTEMD */
++ )
+ {
+ #ifdef WIN32
+ closesocket(lis->fd);
+diff -up cups-1.5.2/scheduler/main.c.systemd-socket cups-1.5.2/scheduler/main.c
+--- cups-1.5.2/scheduler/main.c.systemd-socket 2012-03-16 14:50:57.121449773 +0000
++++ cups-1.5.2/scheduler/main.c 2012-03-16 14:51:55.409483636 +0000
+@@ -26,6 +26,8 @@
+ * launchd_checkin() - Check-in with launchd and collect the listening
+ * fds.
+ * launchd_checkout() - Update the launchd KeepAlive file as needed.
++ * systemd_checkin() - Check-in with systemd and collect the
++ * listening fds.
+ * parent_handler() - Catch USR1/CHLD signals...
+ * process_children() - Process all dead children...
+ * select_timeout() - Calculate the select timeout value.
+@@ -62,6 +64,10 @@
+ # endif /* !LAUNCH_JOBKEY_SERVICEIPC */
+ #endif /* HAVE_LAUNCH_H */
+
++#ifdef HAVE_SYSTEMD
++#include <systemd/sd-daemon.h>
++#endif /* HAVE_SYSTEMD */
++
+ #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
+ # include <malloc.h>
+ #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
+@@ -78,6 +84,9 @@
+ static void launchd_checkin(void);
+ static void launchd_checkout(void);
+ #endif /* HAVE_LAUNCHD */
++#ifdef HAVE_SYSTEMD
++static void systemd_checkin(void);
++#endif /* HAVE_SYSTEMD */
+ static void parent_handler(int sig);
+ static void process_children(void);
+ static void sigchld_handler(int sig);
+@@ -537,6 +546,13 @@ main(int argc, /* I - Number of comm
+ }
+ #endif /* HAVE_LAUNCHD */
+
++#ifdef HAVE_SYSTEMD
++ /*
++ * If we were started by systemd get the listen sockets file descriptors...
++ */
++ systemd_checkin();
++#endif /* HAVE_SYSTEMD */
++
+ /*
+ * Startup the server...
+ */
+@@ -759,6 +775,15 @@ main(int argc, /* I - Number of comm
+ }
+ #endif /* HAVE_LAUNCHD */
+
++#ifdef HAVE_SYSTEMD
++ /*
++ * If we were started by systemd get the listen sockets file
++ * descriptors...
++ */
++
++ systemd_checkin();
++#endif /* HAVE_SYSTEMD */
++
+ /*
+ * Startup the server...
+ */
+@@ -1584,6 +1609,139 @@ launchd_checkout(void)
+ }
+ #endif /* HAVE_LAUNCHD */
+
++#ifdef HAVE_SYSTEMD
++static void
++systemd_checkin(void)
++{
++ int n, fd;
++
++ n = sd_listen_fds(0);
++ if (n < 0)
++ {
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Failed to acquire sockets from systemd - %s",
++ strerror(-n));
++ exit(EXIT_FAILURE);
++ return;
++ }
++
++ if (n == 0)
++ return;
++
++ for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd ++)
++ {
++ http_addr_t addr;
++ socklen_t addrlen = sizeof (addr);
++ int r;
++ cupsd_listener_t *lis;
++ char s[256];
++
++ r = sd_is_socket(fd, AF_UNSPEC, SOCK_STREAM, 1);
++ if (r < 0)
++ {
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Unable to verify socket type - %s",
++ strerror(-r));
++ continue;
++ }
++
++ if (!r)
++ {
++ if (Browsing &&
++ ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_CUPS))
++ {
++ r = sd_is_socket(fd, AF_UNSPEC, SOCK_DGRAM, 0);
++ if (r < 0)
++ {
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Unable to verify socket type - %s",
++ strerror(-r));
++ continue;
++ }
++
++ if (r)
++ {
++ /*
++ * This is the browse socket.
++ */
++
++ char addrstr[256];
++ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen))
++ {
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Unable to get local address - %s",
++ strerror(errno));
++ continue;
++ }
++
++ httpAddrString (&addr, addrstr, sizeof (addrstr));
++ BrowseSocket = fd;
++ BrowseSocketIsSystemd = 1;
++ cupsdLogMessage(CUPSD_LOG_DEBUG,
++ "systemd_checkin: Matched browse (port %d) with fd %d:%s...",
++ BrowsePort, fd, addrstr);
++ continue;
++ }
++
++ }
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Socket not of the right type");
++ continue;
++ }
++
++ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen))
++ {
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Unable to get local address - %s",
++ strerror(errno));
++ continue;
++ }
++
++ /*
++ * Try to match the systemd socket address to one of the listeners...
++ */
++
++ for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
++ lis;
++ lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
++ if (httpAddrEqual(&lis->address, &addr))
++ break;
++
++ if (lis)
++ {
++ cupsdLogMessage(CUPSD_LOG_DEBUG,
++ "systemd_checkin: Matched existing listener %s with fd %d...",
++ httpAddrString(&(lis->address), s, sizeof(s)), fd);
++ }
++ else
++ {
++ cupsdLogMessage(CUPSD_LOG_DEBUG,
++ "systemd_checkin: Adding new listener %s with fd %d...",
++ httpAddrString(&addr, s, sizeof(s)), fd);
++
++ if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
++ {
++ cupsdLogMessage(CUPSD_LOG_ERROR,
++ "systemd_checkin: Unable to allocate listener - "
++ "%s.", strerror(errno));
++ exit(EXIT_FAILURE);
++ }
++
++ cupsArrayAdd(Listeners, lis);
++
++ memcpy(&lis->address, &addr, sizeof(lis->address));
++ }
++
++ lis->fd = fd;
++ lis->is_systemd = 1;
++
++# ifdef HAVE_SSL
++ if (_httpAddrPort(&(lis->address)) == 443)
++ lis->encryption = HTTP_ENCRYPT_ALWAYS;
++# endif /* HAVE_SSL */
++ }
++}
++#endif /* HAVE_SYSTEMD */
+
+ /*
+ * 'parent_handler()' - Catch USR1/CHLD signals...
+diff -up cups-1.5.2/scheduler/Makefile.systemd-socket cups-1.5.2/scheduler/Makefile
+--- cups-1.5.2/scheduler/Makefile.systemd-socket 2012-03-16 14:50:57.130449778 +0000
++++ cups-1.5.2/scheduler/Makefile 2012-03-16 14:50:57.160449794 +0000
+@@ -382,7 +382,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu
+ $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \
+ $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
+ $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \
+- $(LIBGSSAPI) $(LIBWRAP)
++ $(LIBGSSAPI) $(LIBWRAP) $(SDLIBS)
+
+ cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC)
+ echo Linking $@...
+@@ -390,7 +390,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a
+ $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
+ ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \
+ $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \
+- $(LIBWRAP)
++ $(LIBWRAP) $(SDLIBS)
+
+
+ #
diff --git a/abs/extra/cups/cups.install b/abs/extra/cups/cups.install
index e92e17e..47c3d9b 100644
--- a/abs/extra/cups/cups.install
+++ b/abs/extra/cups/cups.install
@@ -1,5 +1,7 @@
post_install() {
- xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ if [ -x usr/bin/xdg-icon-resource ]; then
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ fi
echo ">> If you use an HTTPS connection to CUPS, the first time you access"
echo ">> the interface it may take a very long time before the site comes up."
echo ">> This is because the first request triggers the generation of the CUPS"
@@ -7,9 +9,18 @@ post_install() {
}
post_upgrade() {
- xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ if [ -x usr/bin/xdg-icon-resource ]; then
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ fi
+ if [ "`vercmp $2 1.4.7-2`" -lt 0 ]; then
+ # important upgrade notice
+ echo "daemon script has been renamed to /etc/rc.d/cupsd"
+ echo "change your entry in /etc/rc.conf"
+ fi
}
post_remove() {
- xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ if [ -x usr/bin/xdg-icon-resource ]; then
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ fi
}
diff --git a/abs/extra/cups/cups.logrotate b/abs/extra/cups/cups.logrotate
new file mode 100644
index 0000000..9c49bbd
--- /dev/null
+++ b/abs/extra/cups/cups.logrotate
@@ -0,0 +1,8 @@
+/var/log/cups/*log {
+ missingok
+ notifempty
+ delaycompress
+ postrotate
+ /bin/kill -HUP `cat /var/run/cups.pid 2>/dev/null` 2>/dev/null || true
+ endscript
+}
diff --git a/abs/extra/cups/fix-infinite-usb-loop.patch b/abs/extra/cups/fix-infinite-usb-loop.patch
deleted file mode 100644
index bad179e..0000000
--- a/abs/extra/cups/fix-infinite-usb-loop.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -urNad cups-1.4.0~/backend/usb-libusb.c cups-1.4.0/backend/usb-libusb.c
---- cups-1.4.0~/backend/usb-libusb.c 2009-08-08 00:24:14.000000000 +0200
-+++ cups-1.4.0/backend/usb-libusb.c 2009-09-02 16:37:31.000000000 +0200
-@@ -158,7 +158,7 @@
-
- while (poll(pfds, 2, -1) > 0)
- {
-- if (pfds[0].revents & POLLIN)
-+ if (pfds[0].revents & (POLLIN + POLLHUP))
- {
- if ((bytes = read(print_fd, buffer, sizeof(buffer))) > 0)
- {
-@@ -179,7 +179,12 @@
- }
-
- if (pfds[1].revents & POLLIN)
-- tbytes += side_cb(printer, print_fd);
-+ {
-+ if ((bytes = side_cb(printer, print_fd)) < 0)
-+ pfds[1].events = 0; /* Filter has gone away... */
-+ else
-+ tbytes += bytes;
-+ }
- }
- }
-
-@@ -747,7 +752,7 @@
- if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
- {
- _cupsLangPuts(stderr, _("WARNING: Failed to read side-channel request!\n"));
-- return (0);
-+ return (-1);
- }
-
- switch (command)
diff --git a/abs/extra/dcraw/PKGBUILD b/abs/extra/dcraw/PKGBUILD
index 8ae9657..9c2571b 100644
--- a/abs/extra/dcraw/PKGBUILD
+++ b/abs/extra/dcraw/PKGBUILD
@@ -1,25 +1,25 @@
-# $Id$
+# $Id: PKGBUILD 162767 2012-06-29 22:10:56Z eric $
# Maintainer: tobias <tobias@archlinux.org>
# Contributor: Tobias Kieslich <tobias@justdreams.de>
pkgname=dcraw
-pkgver=9.08
+pkgver=9.15
pkgrel=1
pkgdesc="A command line based converter for digicams raw output"
arch=('i686' 'x86_64')
url="http://www.cybercom.net/~dcoffin/dcraw/"
license=('custom')
-depends=('lcms')
+depends=('lcms' 'jasper')
source=(http://www.cybercom.net/~dcoffin/dcraw/archive/${pkgname}-${pkgver}.tar.gz
license.txt)
-md5sums=('eb1d365c27495a513c0768b2f696ba66'
- '110b4604a6dacd5537339c4082e9e12a')
-sha1sums=('1282402201ca48f922d9167ad078aa58cb18593e'
+sha1sums=('0b06047603640fe19b5d3b2461319d6ba22eee6a'
'502c8f0ac7434d48f5dcb2eefe7599627cb69454')
build() {
cd "${srcdir}/${pkgname}"
- gcc ${CFLAGS} -O3 -o dcraw dcraw.c -lm -ljpeg -llcms -DLOCALEDIR=\"/usr/share/locale/\"
+ gcc ${CFLAGS} -O3 -o dcraw dcraw.c \
+ -Wall -Wno-unused-result -Wno-array-bounds \
+ -lm -ljasper -ljpeg -llcms -DLOCALEDIR=\"/usr/share/locale/\"
}
package() {
diff --git a/abs/extra/dcraw/dcraw.install b/abs/extra/dcraw/dcraw.install
deleted file mode 100644
index 2635964..0000000
--- a/abs/extra/dcraw/dcraw.install
+++ /dev/null
@@ -1,13 +0,0 @@
-post_install() {
- cat << EOF
-
-NOTE for dcraw:
-----
- ==> dcraw provides the simple commandline tools for raw conversion. If you
- ==> are looking for a more sophisticated way consider gimp-ufraw, which
- ==> provides a gimp-plugin and a standalone application that can even convert
- ==> to 16-bit tiff files (which you can use in cinepaint eg.) So please do a
- ==> 'pacman -S gimp-ufraw' to get it.
-
-EOF
-}
diff --git a/abs/extra/ddrescue/PKGBUILD b/abs/extra/ddrescue/PKGBUILD
new file mode 100644
index 0000000..5316569
--- /dev/null
+++ b/abs/extra/ddrescue/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 162261 2012-06-24 16:23:55Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgname=ddrescue
+pkgver=1.16
+pkgrel=1
+pkgdesc="GNU data recovery tool"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/ddrescue/ddrescue.html"
+license=('GPL3')
+depends=('gcc-libs')
+install=$pkgname.install
+source=("http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
+ "http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz.sig")
+md5sums=('57b67407e882c6418531d48a2f20d16b'
+ 'bf072280587665d82829be15eb6fc9ad')
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install install-man
+ rm "$pkgdir"/usr/share/info/dir
+}
diff --git a/abs/extra/ddrescue/ddrescue.install b/abs/extra/ddrescue/ddrescue.install
new file mode 100644
index 0000000..9e2afa7
--- /dev/null
+++ b/abs/extra/ddrescue/ddrescue.install
@@ -0,0 +1,22 @@
+infodir=/usr/share/info
+filelist=(ddrescue.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/dejagnu/PKGBUILD b/abs/extra/dejagnu/PKGBUILD
index bc6136b..cc0b358 100644
--- a/abs/extra/dejagnu/PKGBUILD
+++ b/abs/extra/dejagnu/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id$
+# $Id: PKGBUILD 144075 2011-12-02 23:05:11Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
pkgname=dejagnu
pkgver=1.5
-pkgrel=1
+pkgrel=2
pkgdesc="Framework for testing other programs"
arch=('any')
url="http://www.gnu.org/software/dejagnu/"
@@ -17,15 +17,17 @@ md5sums=('3df1cbca885e751e22d3ebd1ac64dc3c')
build() {
- 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 -j1 DESTDIR="$pkgdir/" install
+ cd $srcdir/$pkgname-$pkgver
+ make -j1 DESTDIR=$pkgdir/ install
}
diff --git a/abs/extra/dnsmasq/PKGBUILD b/abs/extra/dnsmasq/PKGBUILD
index f888ccd..1fd617d 100644
--- a/abs/extra/dnsmasq/PKGBUILD
+++ b/abs/extra/dnsmasq/PKGBUILD
@@ -1,41 +1,51 @@
-# $Id: PKGBUILD 66607 2010-02-01 01:42:17Z giovanni $
-# Maintainer: Paul Mattal <paul@archlinux.org>
+# $Id: PKGBUILD 160917 2012-06-07 00:05:24Z dreisner $
+# Maintainer: Dave Reisner <dreisner@archlinux.org>
+# Contributor: Paul Mattal <paul@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=dnsmasq
-pkgver=2.55
+pkgver=2.62
pkgrel=1
pkgdesc="Lightweight, easy to configure DNS forwarder and DHCP server"
url="http://www.thekelleys.org.uk/dnsmasq/doc.html"
arch=('i686' 'x86_64')
license=('GPL')
-depends=('glibc' 'bash')
-makedepends=('libcap>=2.16')
-backup=('etc/dnsmasq.conf')
-install=
-source=("http://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.gz"
- 'rc.dnsmasq')
+depends=('glibc' 'dbus-core')
+install=$pkgname.install
+backup=('etc/dnsmasq.conf'
+ 'etc/conf.d/dnsmasq')
+source=("http://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.gz"
+ 'dnsmasq.confd'
+ 'rc.dnsmasq'
+ 'dnsmasq.service')
+md5sums=('f47e5cb8f5bac6343f24b2dbe317ab40'
+ '66479e99123faeab83ebaed709ef95b5'
+ '819fbdf6440d710616e6df5f8ca9cdba'
+ '631d8349acbed1b01d4e11d9f42fdb7d')
build() {
- cd $srcdir/$pkgname-$pkgver
+ cd "$pkgname-$pkgver"
- # Build
- make || return 1
+ # link against dbus. this ugliness is needed to ensure that the
+ # compile time opts report properly on startup. yuck.
+ sed -i '/^#ifdef DNSMASQ_COMPILE_OPTS/ {
+ i#define HAVE_DBUS
+ }' src/config.h
- # Install
- install -d $pkgdir/etc/rc.d || return 1
- make PREFIX=/usr DESTDIR=$pkgdir install || return 1
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+
+ make BINDIR=/usr/bin PREFIX=/usr DESTDIR="$pkgdir" install
- install -D -m755 \
- $srcdir/rc.dnsmasq $pkgdir/etc/rc.d/dnsmasq || return 1
- install -D -m644 \
- dnsmasq.conf.example $pkgdir/etc/dnsmasq.conf || return 1
+ install -Dm755 "$srcdir"/rc.dnsmasq "$pkgdir"/etc/rc.d/dnsmasq
+ install -Dm644 "$srcdir"/dnsmasq.confd "$pkgdir/etc/conf.d/dnsmasq"
- # Make the Required Directories for DHCP Server Default Directories
- install -d $pkgdir/var/db || return 1
- install -d $pkgdir/var/lib/misc || return 1
+ install -Dm644 "dbus/dnsmasq.conf" "$pkgdir"/etc/dbus-1/system.d/dnsmasq.conf
+ install -Dm644 "dnsmasq.conf.example" "$pkgdir"/etc/dnsmasq.conf
+ install -Dm644 "$srcdir/dnsmasq.service" "$pkgdir"/usr/lib/systemd/system/dnsmasq.service
}
# vim: ts=2 sw=2 et ft=sh
-md5sums=('b093d7c6bc7f97ae6fd35d048529232a'
- 'e956eee1ec24212a3254d2b168187495')
diff --git a/abs/extra/dnsmasq/dnsmasq.confd b/abs/extra/dnsmasq/dnsmasq.confd
new file mode 100644
index 0000000..933b928
--- /dev/null
+++ b/abs/extra/dnsmasq/dnsmasq.confd
@@ -0,0 +1,9 @@
+#
+# runtime config for dnsmasq
+#
+
+# if unset, dnsmasq will run as nobody.
+DNSMASQ_USER=dnsmasq
+
+# other runtime options. treated as an array.
+DNSMASQ_OPTS=()
diff --git a/abs/extra/dnsmasq/dnsmasq.install b/abs/extra/dnsmasq/dnsmasq.install
new file mode 100644
index 0000000..c2edb7d
--- /dev/null
+++ b/abs/extra/dnsmasq/dnsmasq.install
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+add_dnsmasq_user() {
+ if ! getent passwd dnsmasq >/dev/null; then
+ useradd -r -d / -c 'dnsmasq daemon' -s /sbin/nologin dnsmasq
+ fi
+}
+
+post_install() {
+ add_dnsmasq_user
+}
+
+post_upgrade() {
+ add_dnsmasq_user
+}
+
+post_remove() {
+ if getent passwd dnsmasq >/dev/null; then
+ userdel dnsmasq
+ fi
+}
diff --git a/abs/extra/dnsmasq/dnsmasq.service b/abs/extra/dnsmasq/dnsmasq.service
new file mode 100644
index 0000000..05a1f0b
--- /dev/null
+++ b/abs/extra/dnsmasq/dnsmasq.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=A lightweight DHCP and caching DNS server
+
+[Service]
+Type=dbus
+BusName=uk.org.thekelleys.dnsmasq
+ExecStartPre=/usr/bin/dnsmasq --test
+ExecStart=/usr/bin/dnsmasq -k --enable-dbus --user=dnsmasq --pid-file
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+Alias=dbus-uk.org.thekelleys.dnsmasq
diff --git a/abs/extra/dnsmasq/rc.dnsmasq b/abs/extra/dnsmasq/rc.dnsmasq
index 1676072..4030c28 100755
--- a/abs/extra/dnsmasq/rc.dnsmasq
+++ b/abs/extra/dnsmasq/rc.dnsmasq
@@ -2,35 +2,63 @@
. /etc/rc.conf
. /etc/rc.d/functions
+. /etc/conf.d/dnsmasq
-PID=`pidof -o %PPID /usr/sbin/dnsmasq`
-case "$1" in
+checkconfig() {
+ local testout
+
+ if ! testout=$(/usr/bin/dnsmasq --test 2>&1); then
+ echo "$testout"
+ return 1
+ fi
+
+ return 0
+}
+
+pidfile=/run/dnsmasq.pid
+if [[ -r $pidfile ]]; then
+ read -r PID < "$pidfile"
+ if [[ ! -d /proc/$PID ]]; then
+ # stale pidfile
+ unset PID
+ rm -f "$pidfile"
+ fi
+fi
+
+case $1 in
start)
stat_busy "Starting DNS/DHCP daemon"
- [ -z "$PID" ] && /usr/sbin/dnsmasq
- if [ $? -gt 0 ] ; then
- stat_fail
+ if [[ -z $PID ]] && checkconfig &&
+ /usr/bin/dnsmasq "--user=${DNSMASQ_USER:-nobody}" \
+ "--pid-file=$pidfile" \
+ "${DNSMASQ_OPTS[@]}"; then
+ add_daemon dnsmasq
+ stat_done
else
- add_daemon dnsmasq # create the 'state' dir
- stat_done
+ stat_fail
fi
;;
stop)
stat_busy "Stopping DNS/DHCP daemon"
- [ "$PID" ] && kill $PID &> /dev/null
- if [ $? -gt 0 ]; then
- stat_fail
- else
- rm_daemon dnsmasq # remove the 'state' dir
+ if [[ $PID ]] && kill "$PID" &> /dev/null; then
+ # dnsmasq doesn't clean up after itself
+ rm -f "$pidfile"
+ rm_daemon dnsmasq
stat_done
+ else
+ stat_fail
fi
;;
restart)
$0 stop
- sleep 5
+ sleep 1
$0 start
;;
+ checkconfig)
+ # diagnostics will be printed, with zero/non-zero exit
+ /usr/bin/dnsmasq --test
+ ;;
*)
- echo "usage: $0 {start|stop|restart}"
+ echo "usage: $0 <start|stop|restart|checkconfig>"
esac
-exit 0
+
diff --git a/abs/extra/docbook-xml/LICENSE b/abs/extra/docbook-xml/LICENSE
new file mode 100644
index 0000000..e3482f0
--- /dev/null
+++ b/abs/extra/docbook-xml/LICENSE
@@ -0,0 +1,24 @@
+ Copyright 1992-2006 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ See also http://docbook.org/specs/
+
+ Permission to use, copy, modify and distribute the DocBook XML DTD
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the DTD for
+ any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook DTD in any way, except for declaring and
+ referencing additional sets of general entities and declaring
+ additional notations, label your DTD as a variant of DocBook. See
+ the maintenance documentation for more information.
+
+ Please direct all questions, bug reports, or suggestions for
+ changes to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
diff --git a/abs/extra/docbook-xml/PKGBUILD b/abs/extra/docbook-xml/PKGBUILD
index feac080..e5996d7 100644
--- a/abs/extra/docbook-xml/PKGBUILD
+++ b/abs/extra/docbook-xml/PKGBUILD
@@ -1,268 +1,273 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 151188 2012-02-25 07:07:26Z pierre $
# Maintainer: dorphell <dorphell@archlinux.org>
# Committer: Judd Vinet <jvinet@zeroflux.org>
pkgname=docbook-xml
pkgver=4.5
-pkgrel=1
+pkgrel=5
pkgdesc="A widely used XML scheme for writing documentation and help"
-arch=(i686 x86_64)
-url="http://scrollkeeper.sourceforge.net/docbook.shtml"
+arch=('any')
+url="http://www.oasis-open.org/docbook/"
+license=('MIT')
depends=('libxml2')
-makedepends=('unzip')
install=docbook-xml.install
-source=(http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip
- http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip
- http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip
- http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip
- http://www.docbook.org/xml/4.1.2/docbkx412.zip)
+source=('http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip'
+ 'http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip'
+ 'http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip'
+ 'http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip'
+ 'http://www.docbook.org/xml/4.1.2/docbkx412.zip'
+ 'LICENSE')
noextract=('docbook-xml-4.5.zip' 'docbook-xml-4.4.zip' 'docbook-xml-4.3.zip' 'docbook-xml-4.2.zip' 'docbkx412.zip')
md5sums=('03083e288e87a7e829e437358da7ef9e'
'cbb04e9a700955d88c50962ef22c1634'
'ab200202b9e136a144db1e0864c45074'
'73fe50dfe74ca631c1602f558ed8961f'
- '900d7609fb7e6d78901b357e4acfbc17')
+ '900d7609fb7e6d78901b357e4acfbc17'
+ '50e1eea70bc071b812e963e65af6707e')
-build() {
+package() {
for ver in 4.2 4.3 4.4 4.5; do
mkdir docbook-xml-${ver}
pushd docbook-xml-${ver}
- unzip ${startdir}/src/docbook-xml-${ver}.zip
- mkdir -p ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-${ver}
- cp -af docbook.cat *.dtd ent/ *.mod \
- ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-${ver}/
+ bsdtar xf "${srcdir}/docbook-xml-${ver}.zip"
+ mkdir -p "${pkgdir}/usr/share/xml/docbook/xml-dtd-${ver}"
+ cp -dRf docbook.cat *.dtd ent/ *.mod \
+ "${pkgdir}/usr/share/xml/docbook/xml-dtd-${ver}/"
popd
done
mkdir docbook-xml-4.1.2
pushd docbook-xml-4.1.2
- unzip ${startdir}/src/docbkx412.zip
- mkdir -p ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-4.1.2
- cp -af docbook.cat *.dtd ent/ *.mod \
- ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-4.1.2/
+ bsdtar xf "${srcdir}/docbkx412.zip"
+ mkdir -p "${pkgdir}/usr/share/xml/docbook/xml-dtd-4.1.2"
+ cp -dRf docbook.cat *.dtd ent/ *.mod \
+ "${pkgdir}/usr/share/xml/docbook/xml-dtd-4.1.2/"
popd
- mkdir -p ${startdir}/pkg/etc/xml
- xmlcatalog --noout --create ${startdir}/pkg/etc/xml/docbook-xml
+ mkdir -p "${pkgdir}/etc/xml"
+ xmlcatalog --noout --create "${pkgdir}/etc/xml/docbook-xml"
# V4.1.2
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/soextblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/dbhierx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/dbgenent.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteSystem" \
"http://www.oasis-open.org/docbook/xml/4.1.2" \
"file:///usr/share/xml/docbook/xml-dtd-4.1.2" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteURI" \
"http://www.oasis-open.org/docbook/xml/4.1.2" \
"file:///usr/share/xml/docbook/xml-dtd-4.1.2" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
# V4.2
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook CALS Table Model V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/calstblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/soextblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook Information Pool V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/dbpoolx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/dbhierx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Additional General Entities V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/dbgenent.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Notations V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/dbnotnx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Character Entities V4.2//EN" \
"http://www.oasis-open.org/docbook/xml/4.2/dbcentx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteSystem" \
"http://www.oasis-open.org/docbook/xml/4.2" \
"file:///usr/share/xml/docbook/xml-dtd-4.2" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteURI" \
"http://www.oasis-open.org/docbook/xml/4.2" \
"file:///usr/share/xml/docbook/xml-dtd-4.2" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
# V4.3
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook CALS Table Model V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/calstblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/soextblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook Information Pool V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/dbpoolx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/dbhierx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Additional General Entities V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/dbgenent.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Notations V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/dbnotnx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Character Entities V4.3//EN" \
"http://www.oasis-open.org/docbook/xml/4.3/dbcentx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteSystem" \
"http://www.oasis-open.org/docbook/xml/4.3" \
"file:///usr/share/xml/docbook/xml-dtd-4.3" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteURI" \
"http://www.oasis-open.org/docbook/xml/4.3" \
"file:///usr/share/xml/docbook/xml-dtd-4.3" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
# V4.4
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook CALS Table Model V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/calstblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML HTML Tables V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/htmltblx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/soextblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook Information Pool V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/dbpoolx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook Document Hierarchy V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/dbhierx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Additional General Entities V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/dbgenent.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Notations V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/dbnotnx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook Character Entities V4.4//EN" \
"http://www.oasis-open.org/docbook/xml/4.4/dbcentx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteSystem" \
"http://www.oasis-open.org/docbook/xml/4.4" \
"file:///usr/share/xml/docbook/xml-dtd-4.4" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteURI" \
"http://www.oasis-open.org/docbook/xml/4.4" \
"file:///usr/share/xml/docbook/xml-dtd-4.4" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
# V4.5
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML V4.5//EN" \
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \
"file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteSystem" \
"http://www.oasis-open.org/docbook/xml/4.5" \
"file:///usr/share/xml/docbook/xml-dtd-4.5" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteURI" \
"http://www.oasis-open.org/docbook/xml/4.5" \
"file:///usr/share/xml/docbook/xml-dtd-4.5" \
- ${startdir}/pkg/etc/xml/docbook-xml
+ "${pkgdir}/etc/xml/docbook-xml"
+
+# license
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
diff --git a/abs/extra/docbook-xml/docbook-xml.install b/abs/extra/docbook-xml/docbook-xml.install
index c62f65f..97a6243 100644
--- a/abs/extra/docbook-xml/docbook-xml.install
+++ b/abs/extra/docbook-xml/docbook-xml.install
@@ -40,7 +40,3 @@ post_upgrade() {
post_remove() {
xmlcatalog --noout --del file:///etc/xml/docbook-xml etc/xml/catalog
}
-
-op=$1
-shift
-$op $*
diff --git a/abs/extra/docbook-xml/docbook.patch b/abs/extra/docbook-xml/docbook.patch
deleted file mode 100644
index 1932f19..0000000
--- a/abs/extra/docbook-xml/docbook.patch
+++ /dev/null
@@ -1,226 +0,0 @@
-diff -Naur docbookx412-orig/Makefile docbookx412/Makefile
---- docbookx412-orig/Makefile 2002-02-16 11:08:29.000000000 -0800
-+++ docbookx412/Makefile 2002-08-24 12:03:31.000000000 -0700
-@@ -1,7 +1,7 @@
- SHELL=/bin/sh
- VERSION=4.1.2-9
--DESTDIR=/usr/share/xml/docbook/xml-dtd-$(VERSION)
--CATALOG=/usr/share/xml/docbook/catalog
-+DESTDIR=$(ROOT)/usr/share/xml/docbook/xml-dtd-$(VERSION)
-+CATALOG=$(ROOT)/usr/share/xml/docbook/catalog
- OPENJADEVER=1.3
-
- all:
-@@ -24,7 +24,7 @@
- #
- #
- # DocBook XML V4.1.2
-- @./buildDocBookCatalog
-+ @./buildDocBookCatalog $(ROOT)
-
- uninstall:
- #
-diff -Naur docbookx412-orig/buildDocBookCatalog docbookx412/buildDocBookCatalog
---- docbookx412-orig/buildDocBookCatalog 2002-02-17 09:32:45.000000000 -0800
-+++ docbookx412/buildDocBookCatalog 2002-08-24 12:15:23.000000000 -0700
-@@ -28,16 +28,20 @@
- # Modifications made to Daniel Veillard's catalog build script at
- # http://xmlsoft.org/buildDocBookCatalog.
-
--if [ ! -d /etc/xml -a -w /etc ]
-+DESTDIR=$1
-+echo "DESTDIR is $DESTDIR"
-+mkdir $DESTDIR/etc
-+
-+if [ ! -d $DESTDIR/etc/xml -a -w $DESTDIR/etc ]
- then
- echo Directory /etc/xml missing creating it
-- mkdir /etc/xml
-- chmod 755 /etc/xml
-+ mkdir $DESTDIR/etc/xml
-+ chmod 755 $DESTDIR/etc/xml
- fi
--if [ -w /etc/xml ]
-+if [ -w $DESTDIR/etc/xml ]
- then
-- ROOTCATALOG=/etc/xml/catalog
-- CATALOG=/etc/xml/docbook
-+ ROOTCATALOG=$DESTDIR/etc/xml/catalog
-+ CATALOG=$DESTDIR/etc/xml/docbook
- else
- echo Unable to update root catalog /etc/xml/catalog
- echo Using $HOME/xmlcatalog as the root catalog
-@@ -69,16 +73,7 @@
- #
- # find the prefix for DocBook DTD
- #
--found=`find /usr/share/xml -name docbookx.dtd`
--if [ "$found" = "" ] ; then
-- found=`find $HOME -name docbookx.dtd`
--fi
--if [ "$found" = "" ] ; then
-- found=`find /usr/local -name docbookx.dtd`
--fi
--if [ "$found" = "" ] ; then
-- found=`find /usr/share/sgml -name docbookx.dtd`
--fi
-+found=`find $DESTDIR/usr/share/xml -name docbookx.dtd`
- if [ "$found" = "" ] ; then
- echo could not locate docbookx.dtd for DocBook XML
- exit 1
-@@ -105,49 +100,52 @@
- # exit 2
- #fi
-
-+fakedocbookdir=`echo $docbookdir | sed "s|^$DESTDIR||"`
-+FAKECATALOG=`echo $CATALOG | sed "s|^$DESTDIR||"`
-+
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" \
-- "file://$docbookdir/dbpoolx.mod" $CATALOG
-+ "file://$fakedocbookdir/dbpoolx.mod" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML V4.1.2//EN" \
-- "file://$docbookdir/docbookx.dtd" $CATALOG
-+ "file://$fakedocbookdir/docbookx.dtd" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" \
-- "file://$docbookdir/dbcentx.mod" $CATALOG
-+ "file://$fakedocbookdir/dbcentx.mod" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" \
-- "file://$docbookdir/dbnotnx.mod" $CATALOG
-+ "file://$fakedocbookdir/dbnotnx.mod" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" \
-- "file://$docbookdir/dbgenent.mod" $CATALOG
-+ "file://$fakedocbookdir/dbgenent.mod" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" \
-- "file://$docbookdir/dbhierx.mod" $CATALOG
-+ "file://$fakedocbookdir/dbhierx.mod" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
-- "file://$docbookdir/soextblx.dtd" $CATALOG
-+ "file://$fakedocbookdir/soextblx.dtd" $CATALOG
- xmlcatalog --noout --add "public" \
- "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \
-- "file://$docbookdir/calstblx.dtd" $CATALOG
-+ "file://$fakedocbookdir/calstblx.dtd" $CATALOG
- xmlcatalog --noout --add "rewriteSystem" \
- "http://www.oasis-open.org/docbook/xml/4.1.2" \
-- "file://$docbookdir" $CATALOG
-+ "file://$fakedocbookdir" $CATALOG
- xmlcatalog --noout --add "rewriteURI" \
- "http://www.oasis-open.org/docbook/xml/4.1.2" \
-- "file://$docbookdir" $CATALOG
-+ "file://$fakedocbookdir" $CATALOG
-
- xmlcatalog --noout --add "delegatePublic" \
- "-//OASIS//ENTITIES DocBook XML" \
-- "file://$CATALOG" $ROOTCATALOG
-+ "file://$FAKECATALOG" $ROOTCATALOG
- xmlcatalog --noout --add "delegatePublic" \
- "-//OASIS//DTD DocBook XML" \
-- "file://$CATALOG" $ROOTCATALOG
-+ "file://$FAKECATALOG" $ROOTCATALOG
- xmlcatalog --noout --add "delegateSystem" \
- "http://www.oasis-open.org/docbook/" \
-- "file://$CATALOG" $ROOTCATALOG
-+ "file://$FAKECATALOG" $ROOTCATALOG
- xmlcatalog --noout --add "delegateURI" \
- "http://www.oasis-open.org/docbook/" \
-- "file://$CATALOG" $ROOTCATALOG
-+ "file://$FAKECATALOG" $ROOTCATALOG
-
- #
- # find the prefix for ISO DocBook entities
-@@ -187,66 +185,68 @@
- isodir=`dirname $entxml`
- echo Found ISO DocBook entities in $isodir
-
-+fakeisodir=`echo $isodir | sed "s|^$DESTDIR||"`
-+
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Publishing//EN" \
-- "file://$isodir/iso-pub.ent" $CATALOG
-+ "file://$fakeisodir/iso-pub.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Greek Letters//EN" \
-- "file://$isodir/iso-grk1.ent" $CATALOG
-+ "file://$fakeisodir/iso-grk1.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" \
-- "file://$isodir/iso-box.ent" $CATALOG
-+ "file://$fakeisodir/iso-box.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Greek Symbols//EN" \
-- "file://$isodir/iso-grk3.ent" $CATALOG
-+ "file://$fakeisodir/iso-grk3.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" \
-- "file://$isodir/iso-amsn.ent" $CATALOG
-+ "file://$fakeisodir/iso-amsn.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" \
-- "file://$isodir/iso-num.ent" $CATALOG
-+ "file://$fakeisodir/iso-num.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" \
-- "file://$isodir/iso-grk4.ent" $CATALOG
-+ "file://$fakeisodir/iso-grk4.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Diacritical Marks//EN" \
-- "file://$isodir/iso-dia.ent" $CATALOG
-+ "file://$fakeisodir/iso-dia.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" \
-- "file://$isodir/iso-grk2.ent" $CATALOG
-+ "file://$fakeisodir/iso-grk2.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" \
-- "file://$isodir/iso-amsa.ent" $CATALOG
-+ "file://$fakeisodir/iso-amsa.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" \
-- "file://$isodir/iso-amso.ent" $CATALOG
-+ "file://$fakeisodir/iso-amso.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" \
-- "file://$isodir/iso-cyr1.ent" $CATALOG
-+ "file://$fakeisodir/iso-cyr1.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES General Technical//EN" \
-- "file://$isodir/iso-tech.ent" $CATALOG
-+ "file://$fakeisodir/iso-tech.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" \
-- "file://$isodir/iso-amsc.ent" $CATALOG
-+ "file://$fakeisodir/iso-amsc.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Latin 1//EN" \
-- "file://$isodir/iso-lat1.ent" $CATALOG
-+ "file://$fakeisodir/iso-lat1.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" \
-- "file://$isodir/iso-amsb.ent" $CATALOG
-+ "file://$fakeisodir/iso-amsb.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Latin 2//EN" \
-- "file://$isodir/iso-lat2.ent" $CATALOG
-+ "file://$fakeisodir/iso-lat2.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" \
-- "file://$isodir/iso-amsr.ent" $CATALOG
-+ "file://$fakeisodir/iso-amsr.ent" $CATALOG
- xmlcatalog --noout --add "public" \
- "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" \
-- "file://$isodir/iso-cyr2.ent" $CATALOG
-+ "file://$fakeisodir/iso-cyr2.ent" $CATALOG
-
- xmlcatalog --noout --add "delegatePublic" \
- "ISO 8879:1986" \
-- "file://$CATALOG" $ROOTCATALOG
-+ "file://$FAKECATALOG" $ROOTCATALOG
- #
- #
diff --git a/abs/extra/docbook-xsl/PKGBUILD b/abs/extra/docbook-xsl/PKGBUILD
index 1f0f684..aef4b1e 100644
--- a/abs/extra/docbook-xsl/PKGBUILD
+++ b/abs/extra/docbook-xsl/PKGBUILD
@@ -1,37 +1,35 @@
-# $Id: PKGBUILD 20950 2008-12-08 05:32:07Z allan $
-# Maintainer: Jan de Groot <jgc@archlinux.org>
-# Contributer: Sean Middleditch <elanthis@awesomeplay.com>
+# $Id: PKGBUILD 162687 2012-06-27 22:24:21Z tomegun $
+# Maintainer: Tom Gundersen <teg@jklm.no>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sean Middleditch <elanthis@awesomeplay.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=docbook-xsl
-pkgver=1.76.0
-pkgrel=1
-pkgdesc="XML stylesheets for Docbook-xml transformations."
-arch=(i686 x86_64)
+pkgver=1.77.1
+pkgrel=2
+pkgdesc='XML stylesheets for Docbook-xml transformations'
+arch=('any')
license=('custom')
-url="http://scrollkeeper.sourceforge.net/docbook.shtml"
+url='http://docbook.sourceforge.net/'
depends=('libxml2' 'libxslt' 'docbook-xml')
-source=(http://downloads.sourceforge.net/sourceforge/docbook/docbook-xsl-${pkgver}.tar.bz2)
-install=docbook-xsl.install
+install="$pkgname.install"
+source=("http://downloads.sourceforge.net/docbook/${pkgname}-${pkgver}.tar.bz2")
-build() {
- cd ${srcdir}/${pkgname}-${pkgver}
- mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/common
- install -m644 common/*.{xml,xsl,dtd,ent} ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/common/
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
- mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/params
- install -m644 params/*.xml ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/params/
+ _pkgroot=${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}
- for fn in fo highlighting html roundtrip; do
- mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn}
- install -m644 ${fn}/*.{xml,xsl} ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn}/
- done
- for fn in eclipse htmlhelp javahelp lib manpages profiling template website xhtml; do
- mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn}
- install -m644 ${fn}/*.xsl ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn}/
- done
- mkdir -p ${pkgdir}/etc/xml
- install -m644 VERSION ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/
+ install -dm755 ${_pkgroot}
+ install -m644 VERSION VERSION.xsl ${_pkgroot}
- install -m644 -D COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+ for fn in assembly common eclipse epub epub3 fo highlighting html htmlhelp javahelp lib \
+ manpages params profiling roundtrip template website xhtml xhtml-1_1 xhtml5; do
+ install -dm755 ${_pkgroot}/${fn}
+ install -m644 ${fn}/*.{xml,xsl,dtd,ent} ${_pkgroot}/${fn} || true # ignore missing files
+ done
+
+ install -dm755 ${pkgdir}/etc/xml
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
-md5sums=('6413843525fcaa7f58e4bd30d5192270')
+md5sums=('a88dbdc0cd74702656083b6e4e4241d8')
diff --git a/abs/extra/docbook-xsl/docbook-xsl.install b/abs/extra/docbook-xsl/docbook-xsl.install
index a8ea3e7..c84d929 100644
--- a/abs/extra/docbook-xsl/docbook-xsl.install
+++ b/abs/extra/docbook-xsl/docbook-xsl.install
@@ -1,6 +1,6 @@
post_install() {
- if [ ! -f /etc/xml/catalog ]; then
- xmlcatalog --noout --create /etc/xml/catalog
+ if [ ! -f etc/xml/catalog ]; then
+ xmlcatalog --noout --create etc/xml/catalog
fi
_NEW=`echo $1 | sed 's|\(.*\)\-.*|\1|'`
@@ -39,9 +39,3 @@ post_remove() {
xmlcatalog --noout --del "file:///etc/xml/docbook" etc/xml/catalog
fi
}
-
-op=$1
-shift
-
-$op $*
-
diff --git a/abs/extra/docbook2x/PKGBUILD b/abs/extra/docbook2x/PKGBUILD
index 42dab69..4bc84cd 100644
--- a/abs/extra/docbook2x/PKGBUILD
+++ b/abs/extra/docbook2x/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 19671 2010-06-26 17:37:44Z spupykin $
+# $Id: PKGBUILD 67604 2012-03-13 14:04:01Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
pkgname=docbook2x
pkgver=0.8.8
-pkgrel=9
+pkgrel=11
pkgdesc="A software package that converts DocBook documents into the traditional Unix man page format and the GNU Texinfo format."
arch=('i686' 'x86_64')
url="http://docbook2x.sourceforge.net"
license=("MIT")
-depends=('glibc' 'perl-sgmls' 'perlxml' 'perl-xml-sax' 'libxslt')
+depends=('glibc' 'perl-sgmls' 'perlxml' 'perl-xml-sax' 'libxslt' 'jade')
makedepends=('texinfo')
install=docbook2x.install
source=(http://downloads.sourceforge.net/$pkgname/docbook2X-$pkgver.tar.gz
diff --git a/abs/extra/efibootmgr/PKGBUILD b/abs/extra/efibootmgr/PKGBUILD
new file mode 100755
index 0000000..0fd7bb2
--- /dev/null
+++ b/abs/extra/efibootmgr/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 156423 2012-04-18 07:53:47Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor : Murtuza Akhtari <inxsible at gmail dot com>
+# Contributor: Keshav P R <skodabenz at rocketmail dot com>
+
+pkgname=efibootmgr
+pkgver=0.5.4
+pkgrel=3
+pkgdesc="Tool to modify UEFI Firmware Boot Manager Variables."
+arch=('i686' 'x86_64')
+url="http://linux.dell.com/efibootmgr/"
+license=('GPL2')
+depends=('zlib' 'pciutils')
+makedepends=()
+provides=()
+options=(strip purge docs zipman !emptydirs)
+
+source=("http://linux.dell.com/efibootmgr/permalink/${pkgname}-${pkgver}.tar.gz"
+ 'efibootmgr_after_0.5.4_git.patch'
+ 'efibootmgr_default_to_grub2.patch')
+
+build () {
+ rm -rf ${srcdir}/efibootmgr-${pkgver}_build/ || true
+
+ cp -r ${srcdir}/efibootmgr-${pkgver} ${srcdir}/efibootmgr-${pkgver}_build
+
+ cd ${srcdir}/efibootmgr-${pkgver}_build/
+
+ patch -Np1 -i ${srcdir}/efibootmgr_after_0.5.4_git.patch
+ patch -Np1 -i ${srcdir}/efibootmgr_default_to_grub2.patch
+ echo
+
+ CFLAGS= make
+ echo
+
+}
+
+
+package() {
+
+ mkdir -p ${pkgdir}/usr/sbin/
+ mkdir -p ${pkgdir}/usr/share/man/man8/
+
+ cd ${srcdir}/efibootmgr-${pkgver}_build/
+
+ install -D -m755 ${srcdir}/efibootmgr-${pkgver}_build/src/efibootmgr/efibootmgr ${pkgdir}/usr/sbin/efibootmgr
+ install -D -m644 ${srcdir}/efibootmgr-${pkgver}_build/src/man/man8/efibootmgr.8 ${pkgdir}/usr/share/man/man8/efibootmgr.8
+
+}
+md5sums=('cfcf24752d6461b73f7ba964bbf73169'
+ '29730052de0d6911457a26011f8ddb6e'
+ 'b99b8f79842b96c241a0b0fcfb75c778')
diff --git a/abs/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch b/abs/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch
new file mode 100755
index 0000000..5b9b6f8
--- /dev/null
+++ b/abs/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch
@@ -0,0 +1,159 @@
+diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
+index 5db0d9e..199af39 100644
+--- a/src/efibootmgr/efibootmgr.c
++++ b/src/efibootmgr/efibootmgr.c
+@@ -328,6 +328,7 @@ add_to_boot_order(uint16_t num)
+ /* Now new_data has what we need */
+ memcpy(&(boot_order.Data), new_data, new_data_size);
+ boot_order.DataSize = new_data_size;
++ free(new_data);
+ return create_or_edit_variable(&boot_order);
+ }
+
+diff --git a/src/include/disk.h b/src/include/disk.h
+index eb93d10..8aa37d7 100644
+--- a/src/include/disk.h
++++ b/src/include/disk.h
+@@ -65,6 +65,9 @@ enum _interface_type {interface_type_unknown,
+ ata, atapi, scsi, usb,
+ i1394, fibre, i2o, md};
+
++
++unsigned int lcm(unsigned int x, unsigned int y);
++
+ int disk_get_pci(int fd,
+ unsigned char *bus,
+ unsigned char *device,
+diff --git a/src/lib/disk.c b/src/lib/disk.c
+index 883864f..8ad590b 100644
+--- a/src/lib/disk.c
++++ b/src/lib/disk.c
+@@ -55,7 +55,7 @@ disk_info_from_fd(int fd,
+ return 1;
+ }
+ major = buf.st_dev >> 8;
+- minor = buf.st_dev && 0xFF;
++ minor = buf.st_dev & 0xFF;
+
+ /* IDE disks can have up to 64 partitions, or 6 bits worth,
+ * and have one bit for the disk number.
+@@ -420,6 +420,27 @@ get_sector_size(int filedes)
+ return sector_size;
+ }
+
++/************************************************************
++ * lcm
++ * Requires:
++ * - numbers of which to find the lowest common multiple
++ * Modifies: nothing
++ * Returns:
++ * lowest common multiple of x and y
++ ************************************************************/
++unsigned int
++lcm(unsigned int x, unsigned int y)
++{
++ unsigned int m = x, n = y, o;
++
++ while ((o = m % n)) {
++ m = n;
++ n = o;
++ }
++
++ return (x / n) * y;
++}
++
+ /**
+ * disk_get_partition_info()
+ * @fd - open file descriptor to disk
+@@ -442,26 +463,27 @@ disk_get_partition_info (int fd,
+ uint8_t *mbr_type, uint8_t *signature_type)
+ {
+ legacy_mbr *mbr;
+- void *mbr_unaligned;
++ void *mbr_sector;
++ size_t mbr_size;
+ off_t offset;
+ int this_bytes_read = 0;
+ int gpt_invalid=0, mbr_invalid=0;
+ int rc=0;
+ int sector_size = get_sector_size(fd);
+
+- if (sizeof(*mbr) != sector_size)
+- return 1;
+- mbr_unaligned = malloc(sizeof(*mbr)+sector_size-1);
+- mbr = (legacy_mbr *)
+- (((unsigned long)mbr_unaligned + sector_size - 1) &
+- ~(unsigned long)(sector_size-1));
+- memset(mbr, 0, sizeof(*mbr));
++
++ mbr_size = lcm(sizeof(*mbr), sector_size);
++ if ((rc = posix_memalign(&mbr_sector, sector_size, mbr_size)) != 0)
++ goto error;
++ memset(mbr_sector, '\0', mbr_size);
++
+ offset = lseek(fd, 0, SEEK_SET);
+- this_bytes_read = read(fd, mbr, sizeof(*mbr));
++ this_bytes_read = read(fd, mbr_sector, mbr_size);
+ if (this_bytes_read < sizeof(*mbr)) {
+ rc=1;
+ goto error_free_mbr;
+ }
++ mbr = (legacy_mbr *)mbr_sector;
+ gpt_invalid = gpt_disk_get_partition_info(fd, num,
+ start, size,
+ signature,
+@@ -479,7 +501,8 @@ disk_get_partition_info (int fd,
+ }
+ }
+ error_free_mbr:
+- free(mbr_unaligned);
++ free(mbr_sector);
++ error:
+ return rc;
+ }
+
+diff --git a/src/lib/gpt.c b/src/lib/gpt.c
+index d90ddaf..83e7a94 100644
+--- a/src/lib/gpt.c
++++ b/src/lib/gpt.c
+@@ -215,26 +215,24 @@ read_lastoddsector(int fd, uint64_t lba, void *buffer, size_t count)
+ static ssize_t
+ read_lba(int fd, uint64_t lba, void *buffer, size_t bytes)
+ {
+- int sector_size = get_sector_size(fd);
+- off_t offset = lba * sector_size;
++ int sector_size = get_sector_size(fd);
++ off_t offset = lba * sector_size;
+ ssize_t bytesread;
+- void *aligned;
+- void *unaligned;
+-
+- if (bytes % sector_size)
+- return EINVAL;
++ void *iobuf;
++ size_t iobuf_size;
++ int rc;
+
+- unaligned = malloc(bytes+sector_size-1);
+- aligned = (void *)
+- (((unsigned long)unaligned + sector_size - 1) &
+- ~(unsigned long)(sector_size-1));
+- memset(aligned, 0, bytes);
++ iobuf_size = lcm(bytes, sector_size);
++ rc = posix_memalign(&iobuf, sector_size, iobuf_size);
++ if (rc)
++ return rc;
++ memset(iobuf, 0, bytes);
+
+
+- lseek(fd, offset, SEEK_SET);
+- bytesread = read(fd, aligned, bytes);
+- memcpy(buffer, aligned, bytesread);
+- free(unaligned);
++ lseek(fd, offset, SEEK_SET);
++ bytesread = read(fd, iobuf, iobuf_size);
++ memcpy(buffer, iobuf, bytes);
++ free(iobuf);
+
+ /* Kludge. This is necessary to read/write the last
+ block of an odd-sized disk, until Linux 2.5.x kernel fixes.
diff --git a/abs/extra/efibootmgr/efibootmgr_default_to_grub2.patch b/abs/extra/efibootmgr/efibootmgr_default_to_grub2.patch
new file mode 100755
index 0000000..3520729
--- /dev/null
+++ b/abs/extra/efibootmgr/efibootmgr_default_to_grub2.patch
@@ -0,0 +1,45 @@
+diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
+index 199af39..3826e03 100644
+--- a/src/efibootmgr/efibootmgr.c
++++ b/src/efibootmgr/efibootmgr.c
+@@ -18,7 +18,7 @@
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+- This must tie the EFI_DEVICE_PATH to /boot/efi/elilo.efi
++ This must tie the EFI_DEVICE_PATH to /boot/efi/EFI/arch_grub/grubx64.efi
+ The EFI_DEVICE_PATH will look something like:
+ ACPI device path, length 12 bytes
+ Hardware Device Path, PCI, length 6 bytes
+@@ -26,7 +26,7 @@
+ Media Device Path, Hard Drive, partition XX, length 30 bytes
+ Media Device Path, File Path, length ??
+ End of Hardware Device Path, length 4
+- Arguments passed to elilo, as UCS-2 characters, length ??
++ Arguments passed to grub2, as UCS-2 characters, length ??
+
+ */
+
+@@ -780,8 +780,8 @@ usage()
+ printf("\t-g | --gpt force disk with invalid PMBR to be treated as GPT\n");
+ printf("\t-H | --acpi_hid XXXX set the ACPI HID (used with -i)\n");
+ printf("\t-i | --iface name create a netboot entry for the named interface\n");
+- printf("\t-l | --loader name (defaults to \\elilo.efi)\n");
+- printf("\t-L | --label label Boot manager display label (defaults to \"Linux\")\n");
++ printf("\t-l | --loader name (defaults to \\EFI\\arch_grub\\grubx64.efi)\n");
++ printf("\t-L | --label label Boot manager display label (defaults to \"Arch Linux (GRUB2)\")\n");
+ printf("\t-n | --bootnext XXXX set BootNext to XXXX (hex)\n");
+ printf("\t-N | --delete-bootnext delete BootNext\n");
+ printf("\t-o | --bootorder XXXX,YYYY,ZZZZ,... explicitly set BootOrder (hex)\n");
+@@ -808,8 +808,8 @@ set_default_opts()
+ opts.active = -1; /* Don't set it */
+ opts.timeout = -1; /* Don't set it */
+ opts.edd10_devicenum = 0x80;
+- opts.loader = "\\elilo.efi";
+- opts.label = "Linux";
++ opts.loader = "\\EFI\\arch_grub\\grubx64.efi";
++ opts.label = "Arch Linux (GRUB2)";
+ opts.disk = "/dev/sda";
+ opts.iface = NULL;
+ opts.part = 1;
+
diff --git a/abs/extra/emacs/PKGBUILD b/abs/extra/emacs/PKGBUILD
new file mode 100644
index 0000000..7983759
--- /dev/null
+++ b/abs/extra/emacs/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 161436 2012-06-11 15:03:29Z juergen $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu>
+
+pkgname=emacs
+pkgver=24.1
+pkgrel=2
+pkgdesc="The extensible, customizable, self-documenting real-time display editor"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/emacs/emacs.html"
+license=('GPL3')
+depends=('librsvg' 'gpm' 'giflib' 'libxpm' 'gtk2' 'hicolor-icon-theme' 'gconf' 'desktop-file-utils' 'alsa-lib' 'imagemagick')
+install=emacs.install
+source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$pkgver.tar.bz2{,.sig} glibc_gets.patch)
+
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ patch -Np1 < ${srcdir}/glibc_gets.patch ||exit 1
+ autoreconf -i -I m4
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --with-x-toolkit=gtk --with-xft
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ make DESTDIR="$pkgdir" install
+
+ # remove conflict with ctags package
+ mv "$pkgdir"/usr/bin/{ctags,ctags.emacs}
+ mv "$pkgdir"/usr/share/man/man1/{ctags.1.gz,ctags.emacs.1}
+ # fix all the 777 perms on directories
+ find "$pkgdir"/usr/share/emacs/$_majorver -type d -exec chmod 755 {} \;
+ # fix user/root permissions on usr/share files
+ find "$pkgdir"/usr/share/emacs/$_majorver -exec chown root:root {} \;
+ # fix perms on /var/games
+ chmod 775 "$pkgdir"/var/games
+ chmod 775 "$pkgdir"/var/games/emacs
+ chmod 664 "$pkgdir"/var/games/emacs/*
+ chown -R root:games "$pkgdir"/var/games
+}
+md5sums=('8ba0932c498bc8fb10d7ddba52227e5b'
+ 'c303d5c0bd0f7ea28acd14c9738faff4'
+ '3a811967f16d67a6109101ed0da909d2')
diff --git a/abs/extra/emacs/__changelog b/abs/extra/emacs/__changelog
new file mode 100644
index 0000000..1aff35f
--- /dev/null
+++ b/abs/extra/emacs/__changelog
@@ -0,0 +1 @@
+gets patch
diff --git a/abs/extra/emacs/emacs.install b/abs/extra/emacs/emacs.install
new file mode 100644
index 0000000..d84f1de
--- /dev/null
+++ b/abs/extra/emacs/emacs.install
@@ -0,0 +1,32 @@
+ICON_PATH=usr/share/icons/hicolor
+INFO_DIR=usr/share/info
+
+INFO_FILES=(ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse
+ede ediff edt efaq eieio eintr elisp emacs emacs-mime epa erc eshell eudc flymake
+forms gnus idlwave info mairix-el message mh-e newsticker nxml-mode
+org pcl-cvs pgg rcirc reftex remember sasl sc semantic ses sieve smtpmail
+speedbar tramp url vip viper widget woman)
+
+post_install() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+ update-desktop-database -q
+
+ [[ -x usr/bin/install-info ]] || return 0
+ for f in ${INFO_FILES[@]}; do
+ install-info ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+ update-desktop-database -q
+
+ [[ -x usr/bin/install-info ]] || return 0
+ for f in ${INFO_FILES[@]}; do
+ install-info --delete ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
+ done
+}
diff --git a/abs/extra/emacs/glibc_gets.patch b/abs/extra/emacs/glibc_gets.patch
new file mode 100644
index 0000000..26b71f6
--- /dev/null
+++ b/abs/extra/emacs/glibc_gets.patch
@@ -0,0 +1,90 @@
+--- emacs-24.1-orig/lib/gnulib.mk
++++ emacs-24.1/lib/gnulib.mk
+@@ -599,7 +624,6 @@
+ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
+ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
+ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
+- -e 's/@''GNULIB_GETS''@/$(GNULIB_GETS)/g' \
+ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
+ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
+--- emacs-24.1-orig/lib/stdio.in.h
++++ emacs-24.1/lib/stdio.in.h
+@@ -699,22 +699,11 @@
+ # endif
+ #endif
+
+-#if @GNULIB_GETS@
+-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-# undef gets
+-# define gets rpl_gets
+-# endif
+-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
+-_GL_CXXALIAS_RPL (gets, char *, (char *s));
+-# else
+-_GL_CXXALIAS_SYS (gets, char *, (char *s));
+-# undef gets
+-# endif
+-_GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
++ so any use of gets warrants an unconditional warning; besides, C11
++ removed it. */
++#undef gets
++#if HAVE_RAW_DECL_GETS
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+ #endif
+
+@@ -1054,9 +1043,9 @@
+ # endif
+ #endif
+
+-/* Some people would argue that sprintf should be handled like gets
+- (for example, OpenBSD issues a link warning for both functions),
+- since both can cause security holes due to buffer overruns.
++/* Some people would argue that all sprintf uses should be warned about
++ (for example, OpenBSD issues a link warning for it),
++ since it can cause security holes due to buffer overruns.
+ However, we believe that sprintf can be used safely, and is more
+ efficient than snprintf in those safe cases; and as proof of our
+ belief, we use sprintf in several gnulib modules. So this header
+--- emacs-24.1-orig/m4/stdio_h.m4
++++ emacs-24.1/m4/stdio_h.m4
+@@ -1,4 +1,4 @@
+-# stdio_h.m4 serial 40
++# stdio_h.m4 serial 41
+ dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -18,7 +18,6 @@
+ GNULIB_GETC=1
+ GNULIB_GETCHAR=1
+ GNULIB_FGETS=1
+- GNULIB_GETS=1
+ GNULIB_FREAD=1
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+@@ -72,10 +71,10 @@
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, and which is not
+- dnl guaranteed by C89.
++ dnl guaranteed by both C89 and C11.
+ gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
+- ]], [dprintf fpurge fseeko ftello getdelim getline pclose popen renameat
+- snprintf tmpfile vdprintf vsnprintf])
++ ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
++ renameat snprintf tmpfile vdprintf vsnprintf])
+ ])
+
+ AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+@@ -113,7 +112,6 @@
+ GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
+ GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
+ GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
+- GNULIB_GETS=0; AC_SUBST([GNULIB_GETS])
+ GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
+ GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+ GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
diff --git a/abs/extra/enchant/PKGBUILD b/abs/extra/enchant/PKGBUILD
index 0937bd8..a8dc20d 100644
--- a/abs/extra/enchant/PKGBUILD
+++ b/abs/extra/enchant/PKGBUILD
@@ -1,21 +1,29 @@
-# $Id: PKGBUILD 2581 2008-06-08 12:52:18Z jgc $
-# Maintainer: dorphell <dorphell@archlinux.org>
+# $Id: PKGBUILD 139539 2011-10-03 12:17:06Z jgc $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
pkgname=enchant
pkgver=1.6.0
-pkgrel=1
+pkgrel=4
pkgdesc="A wrapper library for generic spell checking"
-arch=(i686 x86_64)
-license=('LGPL')
-depends=('aspell' 'dbus-glib>=0.74' 'hunspell>=1.2.2')
-makedepends=('hspell')
-options=(!libtool)
-source=(http://www.abisource.com/downloads/enchant/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+arch=('i686' 'x86_64')
url="http://www.abisource.com/enchant/"
+license=('LGPL')
+depends=('aspell' 'dbus-glib' 'hunspell' 'hspell')
+options=('!libtool')
+source=("http://www.abisource.com/downloads/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('de11011aff801dc61042828041fb59c7')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr --disable-static || return 1
- make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --disable-static \
+ --disable-ispell \
+ --with-myspell-dir=/usr/share/myspell
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
-md5sums=('de11011aff801dc61042828041fb59c7')
diff --git a/abs/extra/fftw/PKGBUILD b/abs/extra/fftw/PKGBUILD
index a4ca689..db4322f 100644
--- a/abs/extra/fftw/PKGBUILD
+++ b/abs/extra/fftw/PKGBUILD
@@ -1,49 +1,50 @@
-# $Id: PKGBUILD 20304 2008-12-02 10:48:00Z ronald $
+# $Id: PKGBUILD 159277 2012-05-20 10:35:50Z ronald $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: damir <damir@archlinux.org>
pkgname=fftw
-pkgver=3.2.2
+pkgver=3.3.2
pkgrel=1
pkgdesc="A library for computing the discrete Fourier transform (DFT)"
arch=('i686' 'x86_64')
license=('GPL2')
url="http://www.fftw.org/"
-depends=('glibc')
-options=(!libtool)
-source=(http://www.fftw.org/${pkgname}-${pkgver}.tar.gz)
+depends=('glibc' 'bash')
+makedepends=('gcc-fortran')
+options=('!libtool')
+source=("http://www.fftw.org/${pkgname}-${pkgver}.tar.gz")
install=fftw.install
+sha1sums=('11a8c31186ff5a7d686a79a3f21b2530888e0dc2')
# notes:
# http://www.fftw.org/fftw2_doc/fftw_6.html#SEC69
# http://www.fftw.org/faq/section2.html#singleprec
# http://www.fftw.org/fftw3_doc/Precision.html#Precision
+
build() {
cd ${srcdir}/${pkgname}-${pkgver}
-
- # build & install double precision
- ./configure F77=gfortran --prefix=/usr \
- --enable-shared || return 1
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
+
+ # use upstream default CFLAGS while keeping our -march/-mtune
+ CFLAGS+=" -O3 -fomit-frame-pointer -malign-double -fstrict-aliasing -ffast-math"
+
+ CONFIGURE="./configure F77=gfortran --prefix=/usr \
+ --enable-shared --enable-threads --enable-type-prefix"
+
+ # build & install double precision
+ $CONFIGURE --enable-sse2
+ make
+ make DESTDIR=${pkgdir} install
make clean
# build & install long double precission
- ./configure F77=gfortran --prefix=/usr \
- --enable-long-double --enable-shared || return 1
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
+ $CONFIGURE --enable-long-double
+ make
+ make DESTDIR=${pkgdir} install
make clean
- # build + install single precision
- ./configure F77=gfortran --prefix=/usr \
- --enable-float --enable-shared || return 1
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
-
- # handle info files
- rm -f $pkgdir/usr/share/info/dir
- gzip $pkgdir/usr/share/info/*
+ # build & install single precision
+ $CONFIGURE --enable-float --enable-sse
+ make
+ make DESTDIR=${pkgdir} install
}
-md5sums=('b616e5c91218cc778b5aa735fefb61ae')
diff --git a/abs/extra/gc/PKGBUILD b/abs/extra/gc/PKGBUILD
new file mode 100644
index 0000000..e120ef5
--- /dev/null
+++ b/abs/extra/gc/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 161367 2012-06-10 10:38:24Z jgc $
+# Maintainer: Daniel Isenmann <daniel [at] archlinux.org>
+# Contributor: dorphell <dorphell@gmx.net>
+
+pkgname=gc
+pkgver=7.2
+pkgrel=1
+pkgdesc="A garbage collector for C and C++"
+arch=('i686' 'x86_64')
+url="http://www.hpl.hp.com/personal/Hans_Boehm/gc/"
+license=('GPL')
+source=("http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/${pkgname}-${pkgver}.tar.gz")
+depends=('gcc-libs')
+options=('!libtool')
+md5sums=('d17aecedef3d73e75387fb63558fa4eb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-cplusplus
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm -rf "${pkgdir}/usr/share/gc"
+ install -m755 -d "${pkgdir}/usr/share/doc/gc"
+ install -m644 doc/README{,.{changes,contributors,environment,linux}} \
+ "${pkgdir}/usr/share/doc/gc/"
+
+ sed -i -e 's/GC_MALLOC 1L/gc 3/' doc/gc.man
+ install -m755 -d "${pkgdir}/usr/share/man/man3"
+ install -m644 doc/gc.man "${pkgdir}/usr/share/man/man3/gc.3"
+}
diff --git a/abs/extra/gconf/PKGBUILD b/abs/extra/gconf/PKGBUILD
index 66de23f..9a4d1f6 100644
--- a/abs/extra/gconf/PKGBUILD
+++ b/abs/extra/gconf/PKGBUILD
@@ -1,45 +1,51 @@
-# $Id: PKGBUILD 91729 2010-09-27 18:54:15Z ibiru $
+# $Id: PKGBUILD 156770 2012-04-23 09:05:12Z ibiru $
# Maintainer: Jan de Groot <jan@archlinux.org>
pkgname=gconf
-pkgver=2.32.0
-pkgrel=1
+pkgver=3.2.5
+pkgrel=2
pkgdesc="A configuration database system"
-arch=('i686' 'x86_64')
+arch=(i686 x86_64)
license=('LGPL')
-depends=('orbit2>=2.14.18' 'gtk2>=2.22.0' 'libxml2>=2.7.7' 'polkit>=0.96' 'libldap>=2.4.22' 'dbus-glib>=0.86')
-makedepends=('pkgconfig' 'intltool' 'gtk-doc' 'gobject-introspection')
+depends=('libxml2' 'polkit' 'libldap' 'dbus-glib' 'gtk3')
+makedepends=('intltool' 'gtk-doc' 'gobject-introspection')
options=('!libtool')
install=gconf.install
url="http://www.gnome.org"
-source=(http://ftp.gnome.org/pub/gnome/sources/GConf/2.32/GConf-${pkgver}.tar.bz2
+source=(http://ftp.gnome.org/pub/gnome/sources/GConf/3.2/GConf-$pkgver.tar.xz
gconf-merge-schema
gconfpkg
gconf-reload.patch
01_xml-gettext-domain.patch)
-sha256sums=('54dd1dd7f49928a9cc42574bef6ef0481753770fc19986dc2004bbb7fac977a0'
+sha256sums=('4ddea9503a212ee126c5b46a0a958fd5484574c3cb6ef2baf38db02e819e58c6'
'ee6b6e6f4975dad13a8c45f1c1f0547a99373bdecdcd6604bfc12965c328a028'
'bf1928718caa5df2b9e54a13cfd0f15a8fe0e09e86b84385ce023616a114e898'
'567b78d8b4b4bbcb77c5f134d57bc503c34867fcc6341c0b01716bcaa4a21694'
'c883dec2b96978874a53700cfe7f26f24f8296767203e970bc6402b4b9945eb8')
build() {
- cd "${srcdir}/GConf-${pkgver}"
+ cd "GConf-$pkgver"
# Patch from fedora - reloads gconf after installing schemas
- patch -Np1 -i "${srcdir}/gconf-reload.patch"
+ patch -Np1 -i "$srcdir/gconf-reload.patch"
# http://bugzilla.gnome.org/show_bug.cgi?id=568845
- patch -Np1 -i "${srcdir}/01_xml-gettext-domain.patch"
+ patch -Np1 -i "$srcdir/01_xml-gettext-domain.patch"
+
+ # Python2 fix
+ sed -i '1s|#!/usr/bin/env python$|&2|' gsettings/gsettings-schema-convert
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --libexecdir=/usr/lib/GConf \
- --disable-static --enable-defaults-service
+ --disable-static --enable-defaults-service --with-gtk=3.0 \
+ --disable-orbit
+
make pkglibdir=/usr/lib/GConf
}
+
package() {
- cd "${srcdir}/GConf-${pkgver}"
- make DESTDIR="${pkgdir}" install
- install -m755 -d "${pkgdir}/etc/gconf/gconf.xml.system"
- install -m755 "${srcdir}/gconf-merge-schema" "${pkgdir}/usr/bin/"
- install -d -m755 "${pkgdir}/usr/sbin"
- install -m755 "${srcdir}/gconfpkg" "${pkgdir}/usr/sbin/"
+ cd "GConf-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -m755 -d "$pkgdir/etc/gconf/gconf.xml.system"
+ install -m755 "$srcdir/gconf-merge-schema" "$pkgdir/usr/bin/"
+ install -Dm755 "$srcdir/gconfpkg" "$pkgdir/usr/sbin/gconfpkg"
}
diff --git a/abs/extra/git/ChangeLog b/abs/extra/git/ChangeLog
new file mode 100644
index 0000000..f0c1523
--- /dev/null
+++ b/abs/extra/git/ChangeLog
@@ -0,0 +1,57 @@
+Simple version bumps are omitted from the following ChangeLog.
+
+2011-08-16 Dan McGee <dan@archlinux.org>
+ Version 1.7.6.1-1
+ * Enable USE_LIBPCRE for `git grep -P` usage
+
+2011-05-05 Dan McGee <dan@archlinux.org>
+ Version 1.7.5.1-1
+ * Byte compile emacs files (FS#20874)
+ * Respect CFLAGS/LDFLAGS (FS#23963)
+
+2011-04-27 Dan McGee <dan@archlinux.org>
+ Version 1.7.5-1
+ * Add missing optdepends for git send-email (FS#20923)
+
+2011-01-05 Dan McGee <dan@archlinux.org>
+ Version 1.7.3.5-1
+ * More flexible git-daemon RC scripts (FS#20575)
+
+2010-10-01 Allan McRae <allan@archlinux.org>
+ Version 1.7.3.1-2
+ * Python 2/3 rebuild
+
+2010-06-29 Dan McGee <dan@archlinux.org>
+ Version 1.7.1.1-1
+ * Add emacs completion files (FS#17968)
+ * Add git-daemon RC scripts (FS#19291)
+
+2009-06-05 Dan McGee <dan@archlinux.org>
+ Version 1.6.3.2-1
+ * Remove gitweb from /usr/share; it needs customization to be helpful
+ * Add NO_CROSS_DIRECTORY_HARDLINKS option to build (FS#13683)
+
+2008-09-14 Dan McGee <dan@archlinux.org>
+ Version 1.6.0.2-1
+ * Moved optional depends from install file to optdepends array
+
+2008-06-15 Dan McGee <dan@archlinux.org>
+ Version 1.5.6-1
+ * Removed 'cpio' dependency, clone is now a builtin and no longer needs it
+
+2008-02-02 Dan McGee <dan@archlinux.org>
+ Version 1.5.4-1
+ * Upstream version 1.5.4
+ * Enable pthreads support in pack-objects. To use, set the pack.threads
+ git config option. Read manpages of pack-objects and config for more
+ details.
+ * Changelog added (with entries going back a bit).
+
+2008-01-28 Kevin Piche <kevin@archlinux.org>
+ Version 1.5.3.7-2
+ * Updated for new perl policy (vendor dirs)
+ * Change license to GPL2
+
+2007-11-01 Eric Belanger <eric@archlinux.org>
+ Version 1.5.3.5-2
+ * Fix Perl module location
diff --git a/abs/extra/git/PKGBUILD b/abs/extra/git/PKGBUILD
new file mode 100644
index 0000000..75be079
--- /dev/null
+++ b/abs/extra/git/PKGBUILD
@@ -0,0 +1,107 @@
+
+pkgname=git
+pkgver=1.7.11.4
+pkgrel=1
+pkgdesc="the fast distributed version control system"
+arch=(i686 x86_64)
+url="http://git-scm.com/"
+license=('GPL2')
+depends=('curl' 'expat>=2.0' 'perl-error' 'perl>=5.14.0' 'openssl' 'pcre')
+makedepends=('python2' 'emacs')
+optdepends=('tk: gitk and git gui'
+ 'perl-libwww: git svn'
+ 'perl-term-readkey: git svn'
+ 'perl-mime-tools: git send-email'
+ 'perl-net-smtp-ssl: git send-email TLS support'
+ 'perl-authen-sasl: git send-email TLS support'
+ 'python2: various helper scripts'
+ 'subversion: git svn'
+ 'cvsps: git cvsimport')
+replaces=('git-core')
+provides=('git-core')
+backup=('etc/conf.d/git-daemon.conf')
+source=("http://git-core.googlecode.com/files/git-$pkgver.tar.gz"
+ "http://git-core.googlecode.com/files/git-manpages-$pkgver.tar.gz"
+ git-daemon
+ git-daemon.conf)
+changelog=ChangeLog
+
+build() {
+ export PYTHON_PATH='/usr/bin/python2'
+ cd "$srcdir/$pkgname-$pkgver"
+ make prefix=/usr gitexecdir=/usr/lib/git-core \
+ CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
+ USE_LIBPCRE=1 \
+ NO_CROSS_DIRECTORY_HARDLINKS=1 \
+ all
+
+ cd contrib/emacs
+ make prefix=/usr
+}
+
+check() {
+ export PYTHON_PATH='/usr/bin/python2'
+ cd "$srcdir/$pkgname-$pkgver"
+ local jobs
+ jobs=$(expr "$MAKEFLAGS" : '.*\(-j[0-9]*\).*')
+ make prefix=/usr gitexecdir=/usr/lib/git-core \
+ CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
+ USE_LIBPCRE=1 \
+ NO_CROSS_DIRECTORY_HARDLINKS=1 \
+ NO_SVN_TESTS=y \
+ DEFAULT_TEST_TARGET=prove \
+ GIT_PROVE_OPTS="$jobs -Q" \
+ GIT_TEST_OPTS="--root=/dev/shm/" \
+ test
+}
+
+
+
+package() {
+ export PYTHON_PATH='/usr/bin/python2'
+ cd "$srcdir/$pkgname-$pkgver"
+ make prefix=/usr gitexecdir=/usr/lib/git-core \
+ CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
+ USE_LIBPCRE=1 \
+ NO_CROSS_DIRECTORY_HARDLINKS=1 \
+ INSTALLDIRS=vendor DESTDIR="$pkgdir" install
+
+ # bash completion
+ # until this is fixed, no point in loading it dynamically:
+ # http://git.661346.n2.nabble.com/bash-completion-now-loads-completions-dynamically-so-git-ps1-is-not-defined-when-you-open-a-shell-td7415323.html
+ #mkdir -p "$pkgdir"/usr/share/bash-completion/completions/
+ #install -m644 ./contrib/completion/git-completion.bash "$pkgdir"/usr/share/bash-completion/completions/git
+ mkdir -p "$pkgdir"/etc/bash_completion.d/
+ install -m644 ./contrib/completion/git-completion.bash "$pkgdir"/etc/bash_completion.d/git
+ # more contrib stuff
+ cp -a ./contrib $pkgdir/usr/share/git/
+ # scripts are for python 2.x
+ sed -i 's|#![ ]*/usr/bin/env python|#!/usr/bin/env python2|' \
+ $(find "$pkgdir" -name '*.py') \
+ "$pkgdir"/usr/lib/git-core/git-p4 \
+ "$pkgdir"/usr/share/git/gitview/gitview
+
+ # emacs interface
+ cd contrib/emacs
+ make prefix=/usr DESTDIR="$pkgdir" install
+
+ # how 'bout some manpages?
+ for mansect in man1 man5 man7; do
+ for manpage in "$srcdir"/$mansect/*; do
+ install -D -m644 $manpage "$pkgdir"/usr/share/man/$mansect/$(basename $manpage)
+ done
+ done
+
+ # remove perllocal.pod, .packlist, and empty directories.
+ rm -rf "$pkgdir"/usr/lib/perl5
+
+ # git daemon script
+ install -D -m755 "$srcdir"/git-daemon "$pkgdir"/etc/rc.d/git-daemon
+ install -D -m644 "$srcdir"/git-daemon.conf "$pkgdir"/etc/conf.d/git-daemon.conf
+}
+
+md5sums=('21c7100cddee8579233a924111e829ab'
+ '397af842126a5099968238ab946580a5'
+ '8e2648910fd5dd4f1c41d3c7fa9e9156'
+ '2e42bf97779a1c6411d89043334c9e78')
+
diff --git a/abs/extra/git/git-daemon b/abs/extra/git/git-daemon
new file mode 100644
index 0000000..21ba73e
--- /dev/null
+++ b/abs/extra/git/git-daemon
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+daemon_bin="/usr/lib/git-core/git-daemon"
+daemon_name=$(basename $daemon_bin)
+PIDF="/var/run/$daemon_name.pid"
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/$daemon_name.conf
+
+get_pid() {
+ pidof -o %PPID $daemon_name
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting $daemon_name daemon"
+
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ [ -f $PIDF ] && rm -f $PIDF
+ # RUN
+ $daemon_bin --pid-file=$PIDF $GIT_DAEMON_ARGS
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(get_pid) > $PIDF
+ add_daemon $daemon_name
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping $daemon_name daemon"
+ PID=$(get_pid)
+ # KILL
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm -f $PIDF &> /dev/null
+ rm_daemon $daemon_name
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+
+ status)
+ stat_busy "Checking $daemon_name status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart|status}"
+esac
+
+exit 0
diff --git a/abs/extra/git/git-daemon.conf b/abs/extra/git/git-daemon.conf
new file mode 100644
index 0000000..3f9a120
--- /dev/null
+++ b/abs/extra/git/git-daemon.conf
@@ -0,0 +1,5 @@
+# path to git repositories served
+GIT_REPO="/srv/git/"
+# see `man git-daemon` for all available options
+# $GIT_REPO will be present twice in most configs
+GIT_DAEMON_ARGS="--detach --syslog --verbose --base-path=$GIT_REPO $GIT_REPO"
diff --git a/abs/extra/glew/PKGBUILD b/abs/extra/glew/PKGBUILD
index 291abce..f72d477 100644
--- a/abs/extra/glew/PKGBUILD
+++ b/abs/extra/glew/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 98297 2010-11-06 17:51:38Z stephane $
+# $Id: PKGBUILD 147734 2012-01-27 15:57:44Z stephane $
# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
# Contributor: SleepyDog
pkgname=glew
-pkgver=1.5.7
-pkgrel=1
+pkgver=1.7.0
+pkgrel=2
pkgdesc="The OpenGL Extension Wrangler Library"
arch=('i686' 'x86_64')
url="http://glew.sourceforge.net"
license=('BSD' 'MIT' 'GPL')
depends=('libxmu' 'libxi' 'mesa')
source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tgz)
-sha1sums=('4adc816afbfb65a4969484d10343a88c117ca989')
+sha1sums=('9266f2360c1687a96f2ea06419671d370b2928d1')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -21,8 +21,9 @@ build() {
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make GLEW_DEST="${pkgdir}/usr" install
+ make GLEW_DEST="${pkgdir}/usr" install.all
install -D -m644 LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-}
-# vim: set noexpandtab tabstop=8 shiftwidth=8 textwidth=132 autoindent
+ rm "${pkgdir}"/usr/lib/{libGLEW,libGLEWmx}.a
+ chmod 0755 "${pkgdir}"/usr/lib/libGLEW*.so.${pkgver}
+}
diff --git a/abs/extra/glibmm/PKGBUILD b/abs/extra/glibmm/PKGBUILD
index 7c008cb..c7473ed 100644
--- a/abs/extra/glibmm/PKGBUILD
+++ b/abs/extra/glibmm/PKGBUILD
@@ -1,35 +1,35 @@
-# $Id: PKGBUILD 79559 2010-05-04 13:57:18Z ibiru $
+# $Id: PKGBUILD 163765 2012-07-19 08:32:36Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgbase=glibmm
pkgname=('glibmm' 'glibmm-docs')
-pkgver=2.24.2
+pkgver=2.32.1
pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL')
-makedepends=('glib2>=2.24.1' 'libsigc++2.0>=2.2.5' 'pkgconfig')
-source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2)
+makedepends=('glib2' 'libsigc++2.0' 'pkgconfig')
+source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
options=('!libtool')
-url="http://gtkmm.sourceforge.net/"
-sha256sums=('d4687c0b27f9c9f955a5306649008a1f8d8935edff916278fb7b65b44292ff7a')
+url="http://www.gtkmm.org/"
+sha256sums=('d6ed4d38e8739813941a0f0fec471c00ea93c5ed46179543340821c7ca798a2f')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr || return 1
- make || return 1
+ cd "$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
}
package_glibmm() {
pkgdesc="Glib-- (glibmm) is a C++ interface for glib"
- depends=('glib2>=2.24.0' 'libsigc++2.0>=2.2.5')
- cd "${srcdir}/${pkgbase}-${pkgver}"
+ depends=('glib2' 'libsigc++2.0')
+ cd "$pkgbase-$pkgver"
sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile
- make DESTDIR="${pkgdir}" install || return 1
+ make DESTDIR="$pkgdir" install
}
package_glibmm-docs() {
pkgdesc="Developer documentation for glibmm"
- cd "${srcdir}/${pkgbase}-${pkgver}/docs"
- make DESTDIR="${pkgdir}" install || return 1
+ cd "$pkgbase-$pkgver/docs"
+ make DESTDIR="$pkgdir" install
}
diff --git a/abs/extra/gnome-vfs/PKGBUILD b/abs/extra/gnome-vfs/PKGBUILD
index 5d52b94..dae1cfe 100644
--- a/abs/extra/gnome-vfs/PKGBUILD
+++ b/abs/extra/gnome-vfs/PKGBUILD
@@ -1,34 +1,30 @@
-# $Id: PKGBUILD 92007 2010-09-28 16:42:58Z ibiru $
+# $Id: PKGBUILD 136438 2011-08-29 09:40:33Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gnome-vfs
pkgver=2.24.4
-pkgrel=1
+pkgrel=6
pkgdesc="The GNOME Virtual File System"
-arch=('i686' 'x86_64')
+arch=(i686 x86_64)
license=('LGPL')
-depends=('fam' 'gconf>=2.32.0' 'hal>=0.5.13' 'bzip2' 'avahi>=0.6.27' 'smbclient>=3.5.5' 'gnome-mime-data>=2.18.0-2' 'heimdal>=1.3.3' 'gnutls>=2.8.6')
+depends=('gconf' 'bzip2' 'avahi' 'smbclient' 'gnome-mime-data' 'krb5' 'gnutls' 'libgcrypt')
makedepends=('pkgconfig' 'intltool' 'gtk-doc' 'gnome-common')
-options=('!libtool' '!emptydirs' '!makeflags')
-conflicts=(gnome-vfs-samba)
-provides=(gnome-vfs-samba)
-replaces=(gnome-vfs-samba gnome-vfs-extras)
+options=('!libtool' '!emptydirs')
url="http://www.gnome.org"
install=gnome-vfs.install
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/gnome-vfs-${pkgver}.tar.bz2
- hal-show-volume-names.patch
- gnutls-config.patch)
+ gnutls-config.patch
+ gcrypt-config.patch)
sha256sums=('62de64b5b804eb04104ff98fcd6a8b7276d510a49fbd9c0feb568f8996444faa'
- 'b38b86d6c966dcf64f9140d800aebe8a14845bb8ce7c045f52d4df483cacd23b'
- '66c7cfb12995c0dd94a2caea95c7e3c55981993f05a79c585d60915ff131955d')
+ '66c7cfb12995c0dd94a2caea95c7e3c55981993f05a79c585d60915ff131955d'
+ 'c059e218f310da683778919d36e7862f7e763384805f6453d328fbaf507a8114')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- #Archlinux patch (b.g.o #321498)
- patch -Np1 -i "${srcdir}/hal-show-volume-names.patch"
-
#Fix build with new gnutls
patch -Np1 -i "${srcdir}/gnutls-config.patch"
+ #fix build with new libgcrypt >= 1.5.0
+ patch -Np1 -i "${srcdir}/gcrypt-config.patch"
libtoolize --force
gtkdocize
aclocal
@@ -37,16 +33,17 @@ build() {
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --disable-static \
--libexecdir=/usr/lib/gnome-vfs-2.0 \
- --enable-samba --enable-hal \
+ --enable-samba --disable-hal \
--enable-avahi --disable-howl \
--disable-openssl --enable-gnutls
make
}
+
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
install -d -m755 "${pkgdir}/usr/share/gconf/schemas"
- gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-vfs-2.0 ${startdir}/pkg/etc/gconf/schemas/*.schemas
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-vfs-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
}
diff --git a/abs/extra/gnome-vfs/gcrypt-config.patch b/abs/extra/gnome-vfs/gcrypt-config.patch
new file mode 100644
index 0000000..8ce9187
--- /dev/null
+++ b/abs/extra/gnome-vfs/gcrypt-config.patch
@@ -0,0 +1,31 @@
+# Allow gnome-vfs-2.24 to build with libgcrypt >= 1.5.0
+--- gnome-vfs-2.24.4/configure.in 2010-07-01 12:36:09.000000000 -0300
++++ gnome-vfs-2.24.4-libgcrypt//configure.in 2011-07-22 15:55:02.296325640 -0300
+@@ -689,6 +689,16 @@
+ AM_CONDITIONAL(HAVE_SSL, test x$have_ssl = xtrue)
+
+ dnl ****************************
++dnl LibGCrypt 1.5.0
++dnl ****************************
++
++AM_PATH_LIBGCRYPT(1.5.0)
++
++if test "x${LIBGCRYPT_LIBS}" = "x"; then
++ AC_MSG_ERROR([unable to find libgcrypt])
++fi
++
++dnl ****************************
+ dnl DNS-SD implementations
+ dnl ****************************
+ AM_CONDITIONAL(HAVE_AVAHI, false)
+@@ -1045,8 +1055,8 @@
+ dnl ==============================================================================
+
+ PKG_CHECK_MODULES(LIBGNOMEVFS, glib-2.0 >= $GLIB_REQUIRED gmodule-no-export-2.0 >= $GLIB_REQUIRED gthread-2.0 >= $GLIB_REQUIRED gobject-2.0 >= $GLIB_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libxml-2.0 >= $XML_REQUIRED gnome-mime-data-2.0 $dbus_requirement)
+-LIBGNOMEVFS_CFLAGS="$LIBGNOMEVFS_CFLAGS $OPENSSL_CFLAGS $LIBGNUTLS_CFLAGS $HOWL_CFLAGS $AVAHI_CFLAGS"
+-LIBGNOMEVFS_LIBS="$LIBGNOMEVFS_LIBS $OPENSSL_LIBS $LIBGNUTLS_LIBS $HOWL_LIBS $AVAHI_LIBS $RESOLVER_LIBS"
++LIBGNOMEVFS_CFLAGS="$LIBGNOMEVFS_CFLAGS $OPENSSL_CFLAGS $LIBGNUTLS_CFLAGS $HOWL_CFLAGS $AVAHI_CFLAGS $LIBGCRYPT_CFLAGS"
++LIBGNOMEVFS_LIBS="$LIBGNOMEVFS_LIBS $OPENSSL_LIBS $LIBGNUTLS_LIBS $HOWL_LIBS $AVAHI_LIBS $RESOLVER_LIBS $LIBGCRYPT_LIBS"
+ AC_SUBST(LIBGNOMEVFS_CFLAGS)
+ AC_SUBST(LIBGNOMEVFS_LIBS)
+
diff --git a/abs/extra/gnome-vfs/hal-show-volume-names.patch b/abs/extra/gnome-vfs/hal-show-volume-names.patch
deleted file mode 100644
index 5b8420c..0000000
--- a/abs/extra/gnome-vfs/hal-show-volume-names.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Index: gnome-vfs-hal-mounts.c
-===================================================================
-RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c,v
-retrieving revision 1.33
-diff -u -p -r1.33 gnome-vfs-hal-mounts.c
---- gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 7 Jul 2006 15:56:57 -0000 1.33
-+++ gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 14 Jul 2006 18:48:51 -0000
-@@ -877,6 +877,7 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa
- GnomeVFSDrive *drive;
- GnomeVFSVolumeMonitor *volume_monitor;
- char *name;
-+ char *icon;
- gboolean allowed_by_policy;
- const char *backing_udi;
-
-@@ -975,6 +976,8 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa
- */
- drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi (volume_monitor, libhal_volume_get_udi (hal_volume));
- if (drive == NULL && allowed_by_policy) {
-+ name = _hal_drive_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume);
-+ icon = _hal_drive_policy_get_icon (volume_monitor_daemon, hal_drive, hal_volume);
- drive = g_object_new (GNOME_VFS_TYPE_DRIVE, NULL);
- if (libhal_volume_disc_has_audio (hal_volume)) {
- drive->priv->activation_uri = g_strdup_printf ("cdda://%s",
-@@ -989,16 +992,16 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa
- * So just set it to the empty string
- */
- drive->priv->activation_uri = g_strdup ("");
-+ g_free (name);
-+ name = _hal_volume_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume);
-+ g_free (icon);
-+ icon = _hal_volume_policy_get_icon (volume_monitor_daemon, hal_drive, hal_volume);
- }
- drive->priv->is_connected = TRUE;
- drive->priv->device_path = g_strdup (libhal_volume_get_device_file (hal_volume));
- drive->priv->device_type = _hal_get_gnome_vfs_device_type (hal_drive);
-
-- /* TODO: could add an icon of a drive with media in it since this codepath only
-- * handles drives with media in them
-- */
-- drive->priv->icon = _hal_drive_policy_get_icon (volume_monitor_daemon, hal_drive, NULL);
-- name = _hal_drive_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume);
-+ drive->priv->icon = icon;
- drive->priv->display_name = _gnome_vfs_volume_monitor_uniquify_drive_name (volume_monitor, name);
- g_free (name);
- name = g_utf8_casefold (drive->priv->display_name, -1);
diff --git a/abs/extra/gptfdisk/PKGBUILD b/abs/extra/gptfdisk/PKGBUILD
index 3afe8e3..6b0c453 100644
--- a/abs/extra/gptfdisk/PKGBUILD
+++ b/abs/extra/gptfdisk/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id$
-# Maintainer: Evangelos Foutras <foutrelis@gmail.com>
+# $Id: PKGBUILD 160220 2012-05-31 03:41:30Z foutrelis $
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Hokum <hokum_at_mail_dot_ru>
pkgname=gptfdisk
-pkgver=0.7.2
+pkgver=0.8.5
pkgrel=1
pkgdesc="A text-mode partitioning tool that works on Globally Unique Identifier (GUID) Partition Table (GPT) disks"
arch=('i686' 'x86_64')
@@ -15,7 +15,7 @@ provides=("gdisk=$pkgver")
conflicts=('gdisk')
replaces=('gdisk')
source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz)
-md5sums=('31deeb7acb5104d56ba2ddeafd907513')
+sha256sums=('15cc691f28212c157e05315662ed6b76ffdcc8de6fc118fa21c81ef5aae84af9')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -26,10 +26,10 @@ build() {
package () {
cd "$srcdir/$pkgname-$pkgver"
- install -d "$pkgdir"/{sbin,usr/share/{man/man8,gdisk}}
- install -t "$pkgdir/sbin" gdisk sgdisk fixparts
- install -m644 -t "$pkgdir/usr/share/man/man8" {gdisk,sgdisk}.8
- install -m644 -t "$pkgdir/usr/share/gdisk" README NEWS
+ install -d "$pkgdir"/usr/{bin,share/{doc/gdisk,man/man8}}
+ install -t "$pkgdir/usr/bin" {,c,s}gdisk fixparts
+ install -m644 -t "$pkgdir/usr/share/man/man8" {{,c,s}gdisk,fixparts}.8
+ install -m644 -t "$pkgdir/usr/share/doc/gdisk" README NEWS
}
# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/gtk-doc/PKGBUILD b/abs/extra/gtk-doc/PKGBUILD
index ece4bfc..2f9a6f1 100644
--- a/abs/extra/gtk-doc/PKGBUILD
+++ b/abs/extra/gtk-doc/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 111338 2011-02-26 14:26:16Z ibiru $
+# $Id: PKGBUILD 139346 2011-10-01 18:59:04Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gtk-doc
-pkgver=1.17
+pkgver=1.18
pkgrel=1
pkgdesc="Documentation tool for public library API"
arch=('any')
@@ -11,8 +11,8 @@ depends=('docbook-xsl' 'gnome-doc-utils' 'perl')
makedepends=('pkgconfig' 'jade')
optdepends=('jade: SGML support')
url="http://www.gtk.org/gtk-doc/"
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('911ff8c620743cea7b40156f1947f9470da5e723f35a9d8fb683e50c61830d1f')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('785b591c561be1c8206f0d2575dc63558ea6199c3afe49cbc4efde94a6629a20')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/abs/extra/gtk3/PKGBUILD b/abs/extra/gtk3/PKGBUILD
new file mode 100644
index 0000000..9d4a7a1
--- /dev/null
+++ b/abs/extra/gtk3/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 163899 2012-07-21 19:20:27Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=gtk3
+pkgver=3.4.4
+pkgrel=1
+pkgdesc="GObject-based multi-platform GUI toolkit (v3)"
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+install=gtk3.install
+depends=('atk' 'cairo' 'gtk-update-icon-cache' 'libcups' 'libxcursor' 'libxinerama' 'libxrandr' 'libxi' 'libxcomposite' 'libxdamage' 'pango' 'shared-mime-info' 'colord')
+makedepends=('gobject-introspection')
+options=('!libtool')
+backup=(etc/gtk-3.0/settings.ini)
+license=('LGPL')
+source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/${pkgver%.*}/gtk+-$pkgver.tar.xz
+ settings.ini wacom.patch)
+sha256sums=('f154e460075034da4c0ce89c320025dcd459da2a1fdf32d92a09522eaca242c7'
+ 'c214d3dcdcadda3d642112287524ab3e526ad592b70895c9f3e3733c23701621'
+ '86bda95a14a99d0f596c4ecb2ed715689f71c207c65dfc90a39d4ae7f1c0c0f5')
+build() {
+ cd "gtk+-$pkgver"
+
+ # Partially revert BGO#673440 in order to fix BGO#674157
+ patch -Np1 -i ../wacom.patch
+
+ CXX=/bin/false ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --enable-gtk2-dependency \
+ --disable-schemas-compile
+ #https://bugzilla.gnome.org/show_bug.cgi?id=655517
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ make
+}
+
+package() {
+ cd "gtk+-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 "$srcdir/settings.ini" "$pkgdir/etc/gtk-3.0/settings.ini"
+}
diff --git a/abs/extra/gtk3/gtk3.install b/abs/extra/gtk3/gtk3.install
new file mode 100644
index 0000000..ca20d28
--- /dev/null
+++ b/abs/extra/gtk3/gtk3.install
@@ -0,0 +1,16 @@
+post_install() {
+ /usr/bin/gtk-query-immodules-3.0 --update-cache
+ /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f /usr/lib/gtk-3.0/3.0.0/immodules.cache
+}
+
+post_remove() {
+ /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas
+}
diff --git a/abs/extra/gtk3/settings.ini b/abs/extra/gtk3/settings.ini
new file mode 100644
index 0000000..039000d
--- /dev/null
+++ b/abs/extra/gtk3/settings.ini
@@ -0,0 +1,2 @@
+[Settings]
+gtk-fallback-icon-theme = gnome
diff --git a/abs/extra/gtk3/wacom.patch b/abs/extra/gtk3/wacom.patch
new file mode 100644
index 0000000..79ad84f
--- /dev/null
+++ b/abs/extra/gtk3/wacom.patch
@@ -0,0 +1,12 @@
+diff -u -r gtk+-3.4.2/gdk/x11/gdkdevicemanager-xi2.c gtk+-3.4.2-wacom/gdk/x11/gdkdevicemanager-xi2.c
+--- gtk+-3.4.2/gdk/x11/gdkdevicemanager-xi2.c 2012-05-02 14:45:04.000000000 +0200
++++ gtk+-3.4.2-wacom/gdk/x11/gdkdevicemanager-xi2.c 2012-05-03 18:34:18.034807644 +0200
+@@ -331,6 +331,8 @@
+ input_source = GDK_SOURCE_ERASER;
+ else if (strstr (tmp_name, "cursor"))
+ input_source = GDK_SOURCE_CURSOR;
++ else if (strstr (tmp_name, "finger"))
++ input_source = GDK_SOURCE_TOUCHSCREEN;
+ else if (strstr (tmp_name, "wacom") ||
+ strstr (tmp_name, "pen"))
+ input_source = GDK_SOURCE_PEN;
diff --git a/abs/extra/guile/PKGBUILD b/abs/extra/guile/PKGBUILD
index 265139a..50f10eb 100644
--- a/abs/extra/guile/PKGBUILD
+++ b/abs/extra/guile/PKGBUILD
@@ -1,35 +1,29 @@
-# $Id: PKGBUILD 72807 2010-03-20 04:06:14Z allan $
+# $Id: PKGBUILD 150868 2012-02-23 13:23:16Z ibiru $
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=guile
-pkgver=1.8.7
+pkgver=1.8.8
pkgrel=2
-pkgdesc="Guile is a portable, embeddable Scheme implementation written in C"
+pkgdesc="a portable, embeddable Scheme implementation written in C"
url="http://www.gnu.org/software/guile/"
-arch=('i686' 'x86_64')
+arch=(i686 x86_64)
license=('GPL')
-depends=('gmp' 'libtool' 'ncurses>=5.7' 'texinfo')
+depends=('gmp' 'libltdl' 'ncurses>=5.7' 'texinfo')
install=guile.install
-source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz
- guile-snarf.patch)
-options=('!libtool' '!makeflags')
+source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('18661a8fdfef13e2fcb7651720aa53f3')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
-
- # Fix build failure without -P
- # http://old.nabble.com/build-failure-just-trying-to-build-guile-1.8.7-natively-td26411839.html
- patch -Np1 < ${srcdir}/guile-snarf.patch || return 1
-
- ./configure --prefix=/usr --disable-error-on-warning || return 1
- make LDFLAGS+="-lpthread" || return 1
+ ./configure --prefix=/usr \
+ --disable-static \
+ --disable-error-on-warning
+ make LDFLAGS+="-lpthread"
}
+
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
- rm -f "${pkgdir}/usr/share/info/dir"
- gzip "${pkgdir}/usr/share/info"/* || return 1
+ make DESTDIR="${pkgdir}" install
}
-md5sums=('991b5b3efcbbc3f7507d05bc42f80a5e'
- 'c11264d2a80858ab2ea1af761a6f6e65')
diff --git a/abs/extra/guile/guile-snarf.patch b/abs/extra/guile/guile-snarf.patch
deleted file mode 100644
index 42f2c66..0000000
--- a/abs/extra/guile/guile-snarf.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff -Nur guile-1.8.7.orig/libguile/guile-snarf-docs.in guile-1.8.7/libguile/guile-snarf-docs.in
---- guile-1.8.7.orig/libguile/guile-snarf-docs.in 2009-07-03 18:19:00.000000000 -0400
-+++ guile-1.8.7/libguile/guile-snarf-docs.in 2009-11-19 12:55:32.487266268 -0500
-@@ -23,4 +23,4 @@
- ## Let the user override the preprocessor autoconf found.
- test -n "${CPP+set}" || CPP="@CPP@"
-
--${CPP} -DSCM_MAGIC_SNARF_DOCS "$@"
-+${CPP} -P -DSCM_MAGIC_SNARF_DOCS "$@"
diff --git a/abs/extra/guile/guile.install b/abs/extra/guile/guile.install
index 8fab0b1..5d1eeaf 100644
--- a/abs/extra/guile/guile.install
+++ b/abs/extra/guile/guile.install
@@ -1,3 +1,4 @@
+infodir=/usr/share/info
files=(goops.info
guile-tut.info
guile.info
@@ -11,8 +12,9 @@ files=(goops.info
r5rs.info)
post_install() {
- for f in "${files[@]}"; do
- install-info usr/share/info/${f}.gz usr/share/info/dir 2>/dev/null
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
done
}
@@ -21,7 +23,8 @@ post_upgrade() {
}
pre_remove() {
- for f in "${files[@]}"; do
- install-info --delete usr/share/info/${f}.gz usr/share/info/dir 2> /dev/null
+ [ -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/abs/extra/help2man/PKGBUILD b/abs/extra/help2man/PKGBUILD
index fff2829..2b4176a 100644
--- a/abs/extra/help2man/PKGBUILD
+++ b/abs/extra/help2man/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id$
+# $Id: PKGBUILD 160650 2012-06-03 07:59:58Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Paul Mattal <paul@mattal.com>
pkgname=help2man
-pkgver=1.40.4
+pkgver=1.40.10
pkgrel=1
pkgdesc="Conversion tool to create man files"
arch=('i686' 'x86_64')
@@ -12,7 +12,7 @@ license=('GPL')
depends=('perl-locale-gettext')
install=help2man.install
source=("http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz")
-md5sums=('4d79dc7cb7c20019c2a3650d35259c45')
+md5sums=('7181a363af41e0f476dd81f36b105a8e')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -20,7 +20,7 @@ build() {
./configure --prefix=/usr \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
- --libdir=/lib
+ --libdir=/usr/lib
make
}
diff --git a/abs/extra/help2man/help2man.install b/abs/extra/help2man/help2man.install
index ab6585b..815a943 100644
--- a/abs/extra/help2man/help2man.install
+++ b/abs/extra/help2man/help2man.install
@@ -8,7 +8,7 @@ post_install() {
}
post_upgrade() {
- post_install $1
+ post_install
}
pre_remove() {
diff --git a/abs/extra/hicolor-icon-theme/PKGBUILD b/abs/extra/hicolor-icon-theme/PKGBUILD
index 64610cd..bf04668 100644
--- a/abs/extra/hicolor-icon-theme/PKGBUILD
+++ b/abs/extra/hicolor-icon-theme/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 78611 2010-04-27 17:13:24Z jgc $
+# $Id: PKGBUILD 149617 2012-02-08 20:27:24Z pierre $
# Maintainer: Jan De Groot <jgc@archlinux.org>
pkgname=hicolor-icon-theme
pkgver=0.12
pkgrel=2
pkgdesc="Freedesktop.org Hicolor icon theme"
-arch=(any)
+arch=('any')
url="http://icon-theme.freedesktop.org/wiki/HicolorTheme"
license=('GPL2')
-source=(http://icon-theme.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz)
+source=("http://icon-theme.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz")
md5sums=('55cafbcef8bcf7107f6d502149eb4d87')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr || return 1
- make || return 1
+ ./configure --prefix=/usr
+ make
}
+
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
+ make DESTDIR="${pkgdir}" install
}
-
diff --git a/abs/extra/hwloc/PKGBUILD b/abs/extra/hwloc/PKGBUILD
index d8023b9..bcefb19 100644
--- a/abs/extra/hwloc/PKGBUILD
+++ b/abs/extra/hwloc/PKGBUILD
@@ -1,21 +1,20 @@
-# $Id$
+# $Id: PKGBUILD 159285 2012-05-20 22:11:18Z stephane $
# Maintainer : Stéphane Gaudreault <stephane@archlinux.org>
# Contributor: Sylvain HENRY <hsyl20@yahoo.fr>
# Contributor: Hervé YVIQUEL <elldekaa@gmail.com>
pkgname=hwloc
-pkgver=1.2
+pkgver=1.4.2
pkgrel=1
pkgdesc="Portable Hardware Locality is a portable abstraction of hierarchical architectures"
arch=('i686' 'x86_64')
url="http://www.open-mpi.org/projects/hwloc/"
license=('BSD')
-depends=('sh')
+depends=('sh' 'pciutils' 'cairo' 'libxml2')
makedepends=('pkg-config')
-optdepends=('cairo: Graphical output' 'libxml2: XML export')
options=('!libtool' '!docs')
-source=(http://www.open-mpi.org/software/hwloc/v1.2/downloads/${pkgname}-${pkgver}.tar.bz2)
-sha1sums=('43886dfdddda5bfbaa841976275e7bf643453d7b')
+source=(http://www.open-mpi.org/software/hwloc/v1.4/downloads/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('2c2ca4101b4ea6782393b555a320c566da50cb68')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/abs/extra/icu/PKGBUILD b/abs/extra/icu/PKGBUILD
index 14cd4aa..95b0fab 100644
--- a/abs/extra/icu/PKGBUILD
+++ b/abs/extra/icu/PKGBUILD
@@ -1,24 +1,28 @@
-# $Id: PKGBUILD 92974 2010-10-02 16:39:18Z andyrtr $
+# $Id: PKGBUILD 160960 2012-06-07 13:35:03Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Art Gramlich <art@gramlich-net.com>
pkgname=icu
-pkgver=4.4.2
+pkgver=49.1.2
pkgrel=1
pkgdesc="International Components for Unicode library"
arch=(i686 x86_64)
url="http://www.icu-project.org/"
license=('custom:"icu"')
depends=('gcc-libs' 'sh')
-source=(http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver//./_}-src.tgz
- #http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver/./_}-src.tgz
-)
-md5sums=('314e582264c36b3735466c522899aa07')
-
+source=(#http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver/./_}-src.tgz
+ http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver//./_}-src.tgz
+ icu.8198.revert.icu5431.patch)
+md5sums=('bbc609fe5237202d7abf016141012a45'
+ 'ebd5470fc969c75e52baf4af94a9ee82')
build() {
cd ${srcdir}/icu/source
- ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man
+ # fix Malayalam encoding https://bugzilla.redhat.com/show_bug.cgi?id=654200
+ patch -Rp3 -i ${srcdir}/icu.8198.revert.icu5431.patch
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man
make
}
diff --git a/abs/extra/icu/icu.8198.revert.icu5431.patch b/abs/extra/icu/icu.8198.revert.icu5431.patch
new file mode 100644
index 0000000..4c3e78b
--- /dev/null
+++ b/abs/extra/icu/icu.8198.revert.icu5431.patch
@@ -0,0 +1,129 @@
+Index: icu/trunk/source/layout/IndicReordering.cpp
+===================================================================
+--- icu/trunk/source/layout/IndicReordering.cpp (revision 25772)
++++ icu/trunk/source/layout/IndicReordering.cpp (revision 26090)
+@@ -126,4 +126,8 @@
+ FeatureMask fSMFeatures;
+
++ LEUnicode fPreBaseConsonant;
++ LEUnicode fPreBaseVirama;
++ le_int32 fPBCIndex;
++ FeatureMask fPBCFeatures;
+
+ void saveMatra(LEUnicode matra, le_int32 matraIndex, IndicClassTable::CharClass matraClass)
+@@ -172,5 +176,6 @@
+ fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups),
+ fVMabove(0), fVMpost(0), fVMIndex(0), fVMFeatures(0),
+- fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0)
++ fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0),
++ fPreBaseConsonant(0), fPreBaseVirama(0), fPBCIndex(0), fPBCFeatures(0)
+ {
+ // nothing else to do...
+@@ -191,4 +196,6 @@
+ fVMabove = fVMpost = 0;
+ fSMabove = fSMbelow = 0;
++
++ fPreBaseConsonant = fPreBaseVirama = 0;
+ }
+
+@@ -386,4 +393,12 @@
+ }
+
++ void notePreBaseConsonant(le_uint32 index,LEUnicode PBConsonant, LEUnicode PBVirama, FeatureMask features)
++ {
++ fPBCIndex = index;
++ fPreBaseConsonant = PBConsonant;
++ fPreBaseVirama = PBVirama;
++ fPBCFeatures = features;
++ }
++
+ void noteBaseConsonant()
+ {
+@@ -465,4 +480,20 @@
+ }
+
++ void writePreBaseConsonant()
++ {
++ // The TDIL spec says that consonant + virama + RRA should produce a rakar in Malayalam. However,
++ // it seems that almost none of the fonts for Malayalam are set up to handle this.
++ // So, we're going to force the issue here by using the rakar as defined with RA in most fonts.
++
++ if (fPreBaseConsonant == 0x0d31) { // RRA
++ fPreBaseConsonant = 0x0d30; // RA
++ }
++
++ if (fPreBaseConsonant != 0) {
++ writeChar(fPreBaseConsonant, fPBCIndex, fPBCFeatures);
++ writeChar(fPreBaseVirama,fPBCIndex-1,fPBCFeatures);
++ }
++ }
++
+ le_int32 getOutputIndex()
+ {
+@@ -723,4 +754,5 @@
+ }
+
++
+ IndicClassTable::CharClass charClass = CC_RESERVED;
+ IndicClassTable::CharClass nextClass = CC_RESERVED;
+@@ -730,7 +762,9 @@
+ le_bool seenVattu = FALSE;
+ le_bool seenBelowBaseForm = FALSE;
++ le_bool seenPreBaseForm = FALSE;
+ le_bool hasNukta = FALSE;
+ le_bool hasBelowBaseForm = FALSE;
+ le_bool hasPostBaseForm = FALSE;
++ le_bool hasPreBaseForm = FALSE;
+
+ if (postBase < markStart && classTable->isNukta(chars[postBase])) {
+@@ -746,12 +780,20 @@
+ hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta;
+ hasPostBaseForm = IndicClassTable::hasPostBaseForm(charClass) && !hasNukta;
++ hasPreBaseForm = IndicClassTable::hasPreBaseForm(charClass) && !hasNukta;
+
+ if (IndicClassTable::isConsonant(charClass)) {
+ if (postBaseLimit == 0 || seenVattu ||
+ (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
+- !(hasBelowBaseForm || hasPostBaseForm)) {
++ !(hasBelowBaseForm || hasPostBaseForm || hasPreBaseForm)) {
+ break;
+ }
+
++ // Note any pre-base consonants
++ if ( baseConsonant == lastConsonant && lastConsonant > 0 &&
++ hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) {
++ output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2);
++ seenPreBaseForm = TRUE;
++
++ }
+ // consonants with nuktas are never vattus
+ seenVattu = IndicClassTable::isVattu(charClass) && !hasNukta;
+@@ -786,10 +828,12 @@
+
+ // write any pre-base consonants
++ output.writePreBaseConsonant();
++
+ le_bool supressVattu = TRUE;
+
+ for (i = baseLimit; i < baseConsonant; i += 1) {
+ LEUnicode ch = chars[i];
+- // Don't put 'blwf' on first consonant.
+- FeatureMask features = (i == baseLimit? tagArray2 : tagArray1);
++ // Don't put 'pstf' or 'blwf' on anything before the base consonant.
++ FeatureMask features = tagArray1 & ~( pstfFeatureMask | blwfFeatureMask );
+
+ charClass = classTable->getCharClass(ch);
+@@ -842,5 +886,5 @@
+
+ // write below-base consonants
+- if (baseConsonant != lastConsonant) {
++ if (baseConsonant != lastConsonant && !seenPreBaseForm) {
+ for (i = bcSpan + 1; i < postBase; i += 1) {
+ output.writeChar(chars[i], i, tagArray1);
+@@ -872,5 +916,5 @@
+ // write post-base consonants
+ // FIXME: does this put the right tags on post-base consonants?
+- if (baseConsonant != lastConsonant) {
++ if (baseConsonant != lastConsonant && !seenPreBaseForm) {
+ if (postBase <= lastConsonant) {
+ for (i = postBase; i <= lastConsonant; i += 1) {
diff --git a/abs/extra/id3lib/PKGBUILD b/abs/extra/id3lib/PKGBUILD
index ba0328a..a8768b8 100644
--- a/abs/extra/id3lib/PKGBUILD
+++ b/abs/extra/id3lib/PKGBUILD
@@ -1,29 +1,35 @@
-# $Id: PKGBUILD 2134 2008-05-26 00:30:40Z eric $
-# Maintainer:
+# $Id: PKGBUILD 151326 2012-02-25 14:15:27Z pierre $
# Contributor: Jochem Kossen <j.kossen@home.nl>
+
pkgname=id3lib
pkgver=3.8.3
-pkgrel=10
+pkgrel=12
pkgdesc="An open-source, cross-platform software development library for reading, writing, and manipulating ID3v1 and ID3v2 tags"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
license=('LGPL')
url="http://id3lib.sourceforge.net/"
depends=('zlib' 'gcc-libs')
options=('!libtool')
-source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
- patch_id3lib_3.8.3_UTF16_writing_bug.diff
- id3lib-3.8.3-CVE-2007-4460.patch
- id3lib-3.8.3-gcc-4.3.patch)
-md5sums=('19f27ddd2dda4b2d26a559a4f0f402a7' '196c65adee1ba511ddacef2de0dfd102'\
- '78e90e15ddd1122b66da352b6c3b00ff' 'fdbffd2d9d289ed0d730950c78d4ebc4')
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'patch_id3lib_3.8.3_UTF16_writing_bug.diff'
+ 'id3lib-3.8.3-CVE-2007-4460.patch'
+ 'id3lib-3.8.3-gcc-4.3.patch')
+md5sums=('19f27ddd2dda4b2d26a559a4f0f402a7'
+ '196c65adee1ba511ddacef2de0dfd102'
+ '78e90e15ddd1122b66da352b6c3b00ff'
+ 'fdbffd2d9d289ed0d730950c78d4ebc4')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- patch -Np1 -i ${startdir}/src/patch_id3lib_3.8.3_UTF16_writing_bug.diff || return 1
- patch -Np0 -i ${startdir}/src/id3lib-3.8.3-CVE-2007-4460.patch || return 1
- patch -Np1 -i ${startdir}/src/id3lib-3.8.3-gcc-4.3.patch || return 1
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ patch -p1 -i "${srcdir}"/patch_id3lib_3.8.3_UTF16_writing_bug.diff
+ patch -p0 -i "${srcdir}"/id3lib-3.8.3-CVE-2007-4460.patch
+ patch -p1 -i "${srcdir}"/id3lib-3.8.3-gcc-4.3.patch
./configure --prefix=/usr
- sed -i -e 's/^LIBS =/LIBS = -lz -lstdc++/' src/Makefile || return 1
- make || return 1
- make DESTDIR=${startdir}/pkg install
+ sed -i -e 's/^LIBS =/LIBS = -lz -lstdc++/' src/Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/iw/PKGBUILD b/abs/extra/iw/PKGBUILD
index 86b6865..ed927b0 100644
--- a/abs/extra/iw/PKGBUILD
+++ b/abs/extra/iw/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 135526 2011-08-14 20:37:19Z thomas $
+# $Id: PKGBUILD 159175 2012-05-17 10:12:16Z thomas $
# Maintainer: Thomas BĂ€chler <thomas@archlinux.org>
pkgname=iw
-pkgver=3.0
-pkgrel=2
+pkgver=3.4
+pkgrel=1
pkgdesc="nl80211 based CLI configuration utility for wireless devices"
arch=("i686" "x86_64")
url="http://wireless.kernel.org/en/users/Documentation/iw"
license=("GPL")
depends=("libnl")
-makedepends=("kernel-headers")
+makedepends=("linux-api-headers")
source=(http://wireless.kernel.org/download/$pkgname/$pkgname-$pkgver.tar.bz2)
-sha256sums=('a0ccbf1ce71ae4bdb05495ca18ab00a87c06dce2c3bf8b8358c615e60c4632fb')
+sha256sums=('989b5677588e32de6eda97bf978810b366a7620f78f26f9cc61c15bdb434218a')
build() {
cd "$srcdir"/$pkgname-$pkgver
diff --git a/abs/extra/iw/README b/abs/extra/iw/README
deleted file mode 100644
index d330c95..0000000
--- a/abs/extra/iw/README
+++ /dev/null
@@ -1,2 +0,0 @@
-version.sh does a git describe that fails because it's not a git repo.
-
diff --git a/abs/extra/iw/__changelog b/abs/extra/iw/__changelog
new file mode 100644
index 0000000..9723f2f
--- /dev/null
+++ b/abs/extra/iw/__changelog
@@ -0,0 +1 @@
+linux-api-headers
diff --git a/abs/extra/java7-openjdk/PKGBUILD b/abs/extra/java7-openjdk/PKGBUILD
new file mode 100644
index 0000000..d05bc06
--- /dev/null
+++ b/abs/extra/java7-openjdk/PKGBUILD
@@ -0,0 +1,352 @@
+# $Id: PKGBUILD 161798 2012-06-14 14:46:00Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Guillaume ALAUX <guillaume@archlinux.org>
+
+pkgname=('jre7-openjdk-headless' 'jre7-openjdk' 'jdk7-openjdk' 'openjdk7-src')
+ # ToDo -demo -doc packages, see Debian file lists http://packages.debian.org/source/wheezy/openjdk-7
+pkgbase=java7-openjdk
+_java_ver=7
+_updatever=u5
+_openjdk_build=b21
+_openjdk_date=27_jun_2011
+_icedtea_ver=2.2.1
+_date=20110922
+
+# check "${srcdir}/icedtea7"/Makefile.am
+_CORBA_CHANGESET=38deb372c569
+_HOTSPOT_CHANGESET=889dffcf4a54
+_JAXP_CHANGESET=335fb0b059b7
+_JAXWS_CHANGESET=5471e01ef43b
+_JDK_CHANGESET=6c3b742b735d
+_LANGTOOLS_CHANGESET=beea46c7086b
+_OPENJDK_CHANGESET=0b776ef59474
+
+_bootstrap=0 # 0/1 for quick build or full bootstrap
+
+pkgver=${_java_ver}.${_updatever}_${_icedtea_ver}
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://icedtea.classpath.org"
+license=('custom')
+options=('!emptydirs')
+makedepends=('jdk7-openjdk' 'libxp' 'libxslt'
+ 'alsa-lib' 'apache-ant>=1.8.1' 'giflib' 'libpng>=1.5.7' 'gtk2'
+ 'java-rhino' 'zip' 'unzip' 'cpio' 'fastjar') # 'inetutils' 'grep') # fastjar`?
+[ "$_bootstrap" = "1" ] && makedepends=(${makedepends[@]} 'eclipse-ecj')
+
+#http://www.java.net/download/openjdk/jdk${_java_ver}/promoted/${_openjdk_build}/openjdk-${_java_ver}-fcs-src-${_openjdk_build}-${_openjdk_date}.zip
+
+_url=http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2
+source=(http://icedtea.classpath.org/download/source/icedtea-${_icedtea_ver}.tar.gz{,.sig}
+ ${_url}/archive/${_OPENJDK_CHANGESET}.tar.gz # openjdk.tar.gz
+ ${_url}/corba/archive/${_CORBA_CHANGESET}.tar.gz # corba.tar.gz
+ ${_url}/jaxp/archive/${_JAXP_CHANGESET}.tar.gz # jaxp.tar.gz
+ ${_url}/jaxws/archive/${_JAXWS_CHANGESET}.tar.gz # jaxws.tar.gz
+ ${_url}/jdk/archive/${_JDK_CHANGESET}.tar.gz # jdk.tar.gz
+ ${_url}/langtools/archive/${_LANGTOOLS_CHANGESET}.tar.gz # langtools.tar.gz
+ ${_url}/hotspot/archive/${_HOTSPOT_CHANGESET}.tar.gz # hotspot.tar.gz
+ fontconfig-paths.diff
+ fix_corba_cmds_path.diff
+ openjdk7_fix_jdk_cmds_path.diff
+ openjdk7_nonreparenting-wm.diff
+ disable_Werror.diff
+ jdk7-openjdk.profile
+ jdk7-openjdk.profile.csh
+ jre7-openjdk.profile
+ jre7-openjdk.profile.csh)
+sha256sums=('0f5ba163904f7c50374ab345216dd1b66c077fc431592eb3d4801f7ecda200b6'
+ '0c987bff8e490a57d1e16e328a54665073ef920166342a0a08e5593aa20cd215'
+ '15a6eab62f5108efbf7937b1de7697bd789971886fc1fc08ee8199e16a5c10fe'
+ 'b892b0db6f3e4f89fd480d46ecb7c9ce5c71a884ae5bfe953b4bda9eedf7ea93'
+ 'ff4ab3710fe316b7adc4e57d4d21ff967ca20e2ccc5267ac26b93cd22db8b3fd'
+ '1ef055749ee46ebf7a5be94403b461d8d32e95c98906da459aeb217a0784ff1d'
+ '48a513d18c919ec08d44cffdc12ae65f1e8942924c6cfcca5c1ffa8ca38afd0e'
+ '17055cf1490fab1cccc57bf3aa5b32d655c408859790c7f671bfde180ddf70cb'
+ 'b29a8929bb4aadbc033e99dca6a381ca6342f0373b9c3f67827bfc025187ba41'
+ '9ad943ceb3dbcdf45d72974fc3667886a7ed65c69ab9abc17be5412827551a7f'
+ '7b2db65bfb9d5014e1522178d65cabf05dfa85e0926cde5648b5a338db376479'
+ 'b742113dc6debc3eb92a246e442595481c04a2a3973e7902b86037acb50050ea'
+ 'fd615f476ef17853ae55b7aee3c92b6738f9ea584e915749b1caa7fdc5ff9ca4'
+ 'eb4c7f4cf50f5f74b683857f707bd21ec3847267e2e5e3173f42a6910a024f97'
+ '2ec2c6d3a8b62c5743bf8c50c358d98f6a86219d1d8b70645bcc0e1707670410'
+ '3f28f8bfc6dd105a07f747d7135c77a77de433e2b8647dd7520a900135203fbd'
+ 'faf5fbaf24c33c101d58bacf8b93c1dbe08a0cbde4c596d5b4a6e28dd4b18f0a'
+ '84d3b91cc57c67b2cf2ddb7fe5abcf1e88b5a151565aaecf4b595c7ce8f3fee9')
+
+noextract=("${_OPENJDK_CHANGESET}.tar.gz"
+ "${_CORBA_CHANGESET}.tar.gz"
+ "${_JAXP_CHANGESET}.tar.gz"
+ "${_JAXWS_CHANGESET}.tar.gz"
+ "${_JDK_CHANGESET}.tar.gz"
+ "${_LANGTOOLS_CHANGESET}.tar.gz"
+ "${_HOTSPOT_CHANGESET}.tar.gz")
+
+ _jvmdir=/usr/lib/jvm/java-7-openjdk
+
+ [ "$CARCH" = "x86_64" ] && _JARCH=amd64
+ [ "$CARCH" = "i686" ] && _JARCH=i386
+
+build() {
+ cd "${srcdir}/icedtea-${_icedtea_ver}"
+
+ unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS
+
+ # default is to build with first found java-environment found in our repos - is jdk7-openjdk
+ [ -f /etc/profile.d/jdk.sh ] && . /etc/profile.d/jdk.sh
+
+# unset MAKEFLAGS # parallel build is currently broken
+
+ export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}"
+ export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}"
+
+ . /etc/profile.d/apache-ant.sh
+
+ cp ${srcdir}/*.diff ${srcdir}/icedtea-${_icedtea_ver}/patches
+ export DISTRIBUTION_PATCHES="patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/openjdk7_fix_jdk_cmds_path.diff patches/openjdk7_nonreparenting-wm.diff patches/disable_Werror.diff"
+
+ if [ "$_bootstrap" = "1" ]; then
+ BOOTSTRAPOPT="--enable-bootstrap --with-ecj-jar=/usr/share/java/ecj.jar"
+ else
+ BOOTSTRAPOPT="--disable-bootstrap"
+ fi
+
+ ./configure \
+ $BOOTSTRAPOPT \
+ --with-parallel-jobs="${MAKEFLAGS/-j}" \
+ --disable-tests \
+ --with-pkgversion="ArchLinux build ${pkgver}-${pkgrel}-${CARCH}" \
+ --with-jdk-home=${JAVA_HOME} \
+ --with-openjdk-src-zip=${srcdir}/${_OPENJDK_CHANGESET}.tar.gz \
+ --with-hotspot-src-zip=${srcdir}/${_HOTSPOT_CHANGESET}.tar.gz \
+ --with-corba-src-zip=${srcdir}/${_CORBA_CHANGESET}.tar.gz \
+ --with-jaxp-src-zip=${srcdir}/${_JAXP_CHANGESET}.tar.gz \
+ --with-jaxws-src-zip=${srcdir}/${_JAXWS_CHANGESET}.tar.gz \
+ --with-jdk-src-zip=${srcdir}/${_JDK_CHANGESET}.tar.gz \
+ --with-langtools-src-zip=${srcdir}/${_LANGTOOLS_CHANGESET}.tar.gz \
+ --enable-nss \
+ --with-rhino \
+ --with-abs-install-dir=${_jvmdir}
+ #--help
+ #--enable-systemtap Enable inclusion of SystemTap trace support - needs systemtab from AUR
+
+ make
+}
+
+check() {
+ cd "${srcdir}/icedtea-${_icedtea_ver}"
+ make -k check
+}
+
+package_jre7-openjdk-headless() {
+ pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs - Minimal Java runtime - needed for executing non GUI Java programs"
+ depends=('libjpeg-turbo' 'lcms2' 'nss'
+ 'ca-certificates-java' 'java-rhino')
+ optdepends=('libcups: needed for Java Mauve support - libmawt.so'
+ 'fontconfig: needed for Java Mauve support - libmawt.so')
+ provides=('java-runtime-headless=7')
+ conflicts=('openjdk6')
+ # replaces=('openjdk6') # once we remove openjdk6 pkg from the repos
+ backup=(etc/profile.d/jre.sh
+ etc/profile.d/jre.csh
+ etc/java-7-openjdk/calendars.properties
+ etc/java-7-openjdk/content-types.properties
+ etc/java-7-openjdk/cursors/cursors.properties
+ etc/java-7-openjdk/flavormap.properties
+ etc/java-7-openjdk/fontconfig.bfc
+ etc/java-7-openjdk/fontconfig.properties
+ etc/java-7-openjdk/jvm.cfg
+ etc/java-7-openjdk/logging.properties
+ etc/java-7-openjdk/management/jmxremote.access
+ etc/java-7-openjdk/management/jmxremote.password
+ etc/java-7-openjdk/management/management.properties
+ etc/java-7-openjdk/management/snmp.acl
+ etc/java-7-openjdk/net.properties
+ etc/java-7-openjdk/psfont.properties.ja
+ etc/java-7-openjdk/psfontj2d.properties
+ etc/java-7-openjdk/security/java.policy
+ etc/java-7-openjdk/security/java.security
+ etc/java-7-openjdk/security/nss.cfg
+ etc/java-7-openjdk/sound.properties
+ etc/java-7-openjdk/tz.properties)
+ install=jre7-openjdk-headless.install
+
+ cd "${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image/jre"
+
+ mv lib/fontconfig.Ubuntu.properties.src lib/fontconfig.properties
+ mv lib/fontconfig.Ubuntu.bfc lib/fontconfig.bfc
+ rm -f lib/fontconfig.*.bfc
+ rm -f lib/fontconfig.*.properties.src
+ rm -f lib/fontconfig.properties.src
+
+ install -d -m755 ${pkgdir}/${_jvmdir}/jre/
+ cp -a bin lib ${pkgdir}/${_jvmdir}/jre
+
+ # Install man pages
+ pushd ../../j2re-image/man
+ install -m755 -d ${pkgdir}/usr/share/man/{,ja/}man1/
+ install -m644 man1/*.1 ${pkgdir}/usr/share/man/man1
+ install -m644 ja_JP.UTF-8/man1/*.1 ${pkgdir}/usr/share/man/ja/man1
+ popd
+
+ # more files that belong to the desktop package
+ mkdir ${srcdir}/tmp-desktop-jre
+ for file in \
+ "/usr/lib/jvm/java-7-openjdk/jre/bin/policytool" \
+ "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/libjsoundalsa.so" \
+ "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/libsplashscreen.so" \
+ "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/xawt/libmawt.so" \
+ "/usr/share/man/ja/man1/policytool.1" \
+ "/usr/share/man/man1/policytool.1"; do
+ dirname=`dirname $file`
+ install -dm755 ${srcdir}/tmp-desktop-jre/$dirname || /bin/true
+ # mv file from fakeinstall to pkgdir
+ mv ${pkgdir}/$file ${srcdir}/tmp-desktop-jre$file
+ done
+ rmdir ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/xawt
+
+ # Link binaries into /usr/bin
+ pushd ${pkgdir}/${_jvmdir}/jre/bin
+ install -m755 -d ${pkgdir}/usr/bin/
+ for file in *; do
+ ln -sf ${_jvmdir}/jre/bin/${file} ${pkgdir}/usr/bin
+ done
+ popd
+
+ # Link JKS keystore from ca-certificates-java
+ rm -f ${pkgdir}/${_jvmdir}/jre/lib/security/cacerts
+ ln -sf /etc/ssl/certs/java/cacerts "${pkgdir}/${_jvmdir}/jre/lib/security/cacerts"
+
+ # Set some variables
+ install -m755 -d ${pkgdir}/etc/profile.d/
+ install -m755 ${srcdir}/jre7-openjdk.profile ${pkgdir}/etc/profile.d/jre.sh
+ install -m755 ${srcdir}/jre7-openjdk.profile.csh ${pkgdir}/etc/profile.d/jre.csh
+
+ # Install license
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgbase}/
+ install -m644 ASSEMBLY_EXCEPTION LICENSE THIRD_PARTY_README \
+ ${pkgdir}/usr/share/licenses/${pkgbase}
+
+ # Put some more files under backup control
+ install -m755 -d ${pkgdir}/etc/java-7-openjdk/
+ install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/*.properties* ${pkgdir}/etc/java-7-openjdk/
+ # install dummy links to make them found by JAVA
+ cd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/
+ for file in `ls ${pkgdir}/etc/java-7-openjdk/*.properties*`; do
+ ln -vsf /etc/java-7-openjdk/`basename $file` .
+ done
+ # some more
+ install -m755 -d ${pkgdir}/etc/java-7-openjdk/{cursors,management,security}
+ install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/images/cursors/cursors.properties ${pkgdir}/etc/java-7-openjdk/cursors/
+ pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/images/cursors/
+ ln -vsf /etc/java-7-openjdk/cursors/cursors.properties .
+ popd
+ mv ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/jmxremote.password.template ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/jmxremote.password
+ mv ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/snmp.acl.template ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/snmp.acl
+ install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/{management.properties,jmxremote.access,jmxremote.password,snmp.acl} ${pkgdir}/etc/java-7-openjdk/management/
+ pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management
+ ln -vsf /etc/java-7-openjdk/management/{management.properties,jmxremote.access,jmxremote.password,snmp.acl} .
+ popd
+ install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/security/{java.policy,java.security,nss.cfg} ${pkgdir}/etc/java-7-openjdk/security/
+ pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/security
+ ln -vsf /etc/java-7-openjdk/security/{java.policy,java.security,nss.cfg} .
+ popd
+ install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/fontconfig.bfc ${pkgdir}/etc/java-7-openjdk/
+ install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/jvm.cfg ${pkgdir}/etc/java-7-openjdk/
+ pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/
+ ln -vsf /etc/java-7-openjdk/jvm.cfg .
+ popd
+}
+
+package_jre7-openjdk() {
+ pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs -Full Java runtime environment - needed for executing Java GUI and Webstart programs"
+ depends=('jre7-openjdk-headless' 'xdg-utils' 'hicolor-icon-theme')
+ optdepends=('icedtea-web-java7: web browser plugin + Java Web Start'
+ 'alsa-lib: for basic sound support'
+ 'giflib: for gif format support'
+ 'gtk2: for the Gtk+ look and feel - desktop usage'
+ 'libxtst: linked in xawt/libmawt.so - desktop usage')
+ install=jre7-openjdk.install
+ provides=('java-runtime=7')
+ conflicts=('openjdk6')
+
+ mv ${srcdir}/tmp-desktop-jre/* ${pkgdir}
+ # Link binaries into /usr/bin
+ pushd ${pkgdir}/${_jvmdir}/jre/bin
+ install -m755 -d ${pkgdir}/usr/bin/
+ for file in *; do
+ ln -sf ${_jvmdir}/jre/bin/${file} ${pkgdir}/usr/bin
+ done
+ popd
+
+ cd "${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image/jre"
+
+ # Install icons and menu entries
+ for s in 16 24 32 48 ; do
+ install -m755 -d ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/
+ install -m644 ../../../openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
+ ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/java.png
+ done
+
+ # Install desktop files.
+ install -m755 -d ${pkgdir}/usr/share/applications
+ install -m644 ${srcdir}/icedtea-${_icedtea_ver}/policytool.desktop ${pkgdir}/usr/share/applications
+}
+
+package_jdk7-openjdk() {
+ pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs - SDK"
+ depends=('jre7-openjdk')
+ provides=('java-environment=7')
+ conflicts=('java-environment')
+ # replaces=('openjdk6')
+ backup=(etc/profile.d/jdk.sh etc/profile.d/jdk.csh)
+
+ cd "${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image"
+
+ # Main files
+ install -m755 -d ${pkgdir}/${_jvmdir}/
+
+ cp -a demo include lib sample ${pkgdir}/${_jvmdir}
+
+ # 'bin' files
+ pushd bin
+ install -m755 -d ${pkgdir}/${_jvmdir}/bin/ \
+ ${pkgdir}/usr/bin/ \
+ ${pkgdir}/usr/share/man/{,ja/}man1/
+
+ # 'java-rmi.cgi' will be handled separately as it should not be in the PATH and has no man page
+ for b in $(ls | grep -v java-rmi.cgi); do
+ if [ -e ../jre/bin/${b} ]; then
+ # Provide a link of the jre binary in the jdk/bin/ directory
+ ln -s ../jre/bin/${b} ${pkgdir}/${_jvmdir}/bin/${b}
+ else
+ # Copy binary to jdk/bin/
+ install -m755 ${b} ${pkgdir}/${_jvmdir}/bin/${b}
+ # Copy man page
+ install -m644 ../man/man1/${b}.1 ${pkgdir}/usr/share/man/man1/${b}.1
+ install -m644 ../man/ja/man1/${b}.1 ${pkgdir}/usr/share/man/ja/man1/${b}.1
+ # Link from /bin/
+ ln -s ${_jvmdir}/bin/${b} ${pkgdir}/usr/bin/${b}
+ fi
+ done
+ popd
+
+ # Install desktop files.
+ install -m755 -d ${pkgdir}/usr/share/applications
+ install -m644 ${srcdir}/icedtea-${_icedtea_ver}/jconsole.desktop ${pkgdir}/usr/share/applications
+
+ # Handling 'java-rmi.cgi' separately
+ install -m755 -D bin/java-rmi.cgi ${pkgdir}/${_jvmdir}/bin/java-rmi.cgi
+
+ # Set some variables
+ install -m755 -d ${pkgdir}/etc/profile.d/
+ install -m755 ${srcdir}/${pkgname}.profile ${pkgdir}/etc/profile.d/jdk.sh
+ install -m755 ${srcdir}/${pkgname}.profile.csh ${pkgdir}/etc/profile.d/jdk.csh
+}
+
+package_openjdk7-src() {
+ pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs - sources"
+
+ install -D ${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image/src.zip \
+ ${pkgdir}/${_jvmdir}/src.zip
+}
diff --git a/abs/extra/java7-openjdk/__changelog b/abs/extra/java7-openjdk/__changelog
new file mode 100644
index 0000000..2d2aafa
--- /dev/null
+++ b/abs/extra/java7-openjdk/__changelog
@@ -0,0 +1 @@
+remove pulselib
diff --git a/abs/extra/java7-openjdk/disable_Werror.diff b/abs/extra/java7-openjdk/disable_Werror.diff
new file mode 100644
index 0000000..fa8887a
--- /dev/null
+++ b/abs/extra/java7-openjdk/disable_Werror.diff
@@ -0,0 +1,11 @@
+--- openjdk/hotspot/make/linux/makefiles/gcc.make 2012-06-07 16:30:51.000000000 +0200
++++ openjdk/hotspot/make/linux/makefiles/gcc.make.new 2012-06-14 15:32:44.967695139 +0200
+@@ -150,7 +150,7 @@
+ endif
+
+ # Compiler warnings are treated as errors
+-WARNINGS_ARE_ERRORS = -Werror
++#WARNINGS_ARE_ERRORS = -Werror
+
+ # Except for a few acceptable ones
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
diff --git a/abs/extra/java7-openjdk/fix_corba_cmds_path.diff b/abs/extra/java7-openjdk/fix_corba_cmds_path.diff
new file mode 100644
index 0000000..7a3db95
--- /dev/null
+++ b/abs/extra/java7-openjdk/fix_corba_cmds_path.diff
@@ -0,0 +1,29 @@
+--- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:26:12.000000000 +0300
++++ openjdk/corba/make/common/shared/Defs-utils.gmk 2008-04-14 15:35:13.000000000 +0300
+@@ -76,7 +76,7 @@
+ CHMOD = $(UTILS_COMMAND_PATH)chmod
+ CMP = $(UTILS_USR_BIN_PATH)cmp
+ COMM = $(UTILS_USR_BIN_PATH)comm
+-COMPRESS = $(UTILS_USR_BIN_PATH)compress
++COMPRESS = $(UTILS_COMMAND_PATH)compress
+ CP = $(UTILS_COMMAND_PATH)cp
+ CPIO = $(UTILS_COMMAND_PATH)cpio
+ CUT = $(UTILS_USR_BIN_PATH)cut
+@@ -125,7 +125,7 @@
+ TAIL = $(UTILS_USR_BIN_PATH)tail
+ TAR = $(UTILS_COMMAND_PATH)tar
+ TEST = $(UTILS_USR_BIN_PATH)test
+-TOUCH = $(UTILS_COMMAND_PATH)touch
++TOUCH = $(UTILS_USR_BIN_PATH)touch
+ TR = $(UTILS_USR_BIN_PATH)tr
+ TRUE = $(UTILS_COMMAND_PATH)true
+ UNAME = $(UTILS_COMMAND_PATH)uname
+@@ -176,7 +176,7 @@
+ # others have it in /usr/bin.
+ SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
+ $(wildcard $(UTILS_USR_BIN_PATH)sort))
+- NAWK = $(USRBIN_PATH)gawk
++ NAWK = $(UTILS_COMMAND_PATH)gawk
+ # Intrinsic unix command, with backslash-escaped character interpretation
+ ECHO = /bin/echo -e
+ # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not)
diff --git a/abs/extra/java7-openjdk/fontconfig-paths.diff b/abs/extra/java7-openjdk/fontconfig-paths.diff
new file mode 100644
index 0000000..fa08db6
--- /dev/null
+++ b/abs/extra/java7-openjdk/fontconfig-paths.diff
@@ -0,0 +1,134 @@
+--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties 2009-05-29 22:45:23.024341869 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.new 2009-05-29 22:55:13.681366890 +0000
+@@ -275,73 +275,61 @@
+
+ # Font File Names
+
+-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
+-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
+-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
+-
+-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
+-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
+-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
+-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
+-
+-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
+-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf
+-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf
+-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf
+-
+-filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf
+-
+-filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
+-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf
+-filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf
+-filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf
+-filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf
+-filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf
+-filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf
+-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
+-filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
+-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf
+-filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf
+-filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
+-filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf
+-
+-filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf
+-filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf
+-filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf
+-filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf
+-#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf
+-filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf
+-filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf
+-filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf
+-filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf
+-filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf
+-
+-filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf
+-filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf
+-filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf
+-filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf
+-filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf
+-filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf
+-filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf
+-filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf
+-filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf
+-filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf
+-filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf
+-filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf
+-
+-# AWT X11 font paths
+-awtfontpath.latin-1=/usr/share/fonts/X11/Type1
+-awtfontpath.umingcn=/usr/share/fonts/truetype/arphic
+-awtfontpath.uminghk=/usr/share/fonts/truetype/arphic
+-awtfontpath.umingtw=/usr/share/fonts/truetype/arphic
+-awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic
+-awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy
+-awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
+-awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
+-awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic
+-awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk
+-awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts
++filename.DejaVu_Sans=/usr/share/fonts/TTF/DejaVuSans.ttf
++filename.DejaVu_Sans_Bold=/usr/share/fonts/TTF/DejaVuSans-Bold.ttf
++filename.DejaVu_Sans_Oblique=/usr/share/fonts/TTF/DejaVuSans-Oblique.ttf
++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSans-BoldOblique.ttf
++
++filename.DejaVu_Sans_Mono=/usr/share/fonts/TTF/DejaVuSansMono.ttf
++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf
++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf
++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf
++
++filename.DejaVu_Serif=/usr/share/fonts/TTF/DejaVuSerif.ttf
++filename.DejaVu_Serif_Bold=/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf
++filename.DejaVu_Serif_Oblique=/usr/share/fonts/TTF/DejaVuSerif-Oblique.ttf
++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSerif-BoldOblique.ttf
++
++filename.AR_PL_UMing_CN=/usr/share/fonts/TTF/uming.ttc
++filename.AR_PL_UMing_HK=/usr/share/fonts/TTF/uming.ttc
++filename.AR_PL_UMing_TW=/usr/share/fonts/TTF/uming.ttc
++filename.AR_PL_ShanHeiSun_Uni=/usr/share/TTF/uming.ttf
++
++filename.WenQuanYi_Zen_Hei=/usr/share/fonts/TTF/wqy-zenhei.ttf
++filename.Baekmuk_Batang=/usr/share/fonts/TTF/batang.ttf
++filename.UnBatang=/usr/share/fonts/TTF/UnBatang.ttf
++filename.UnBatang_Bold=/usr/share/fonts/TTF/UnBatangBold.ttf
++filename.Baekmuk_Gulim=/usr/share/fonts/TTF/gulim.ttf
++filename.UnDotum=/usr/share/fonts/TTF/UnDotum.ttf
++filename.UnDotum_Bold=/usr/share/fonts/TTF/UnDotumBold.ttf
++filename.Kochi_Gothic=/usr/share/fonts/TTF/kochi-gothic.ttf
++filename.Sazanami_Gothic=/usr/share/fonts/TTF/sazanami-gothic.ttf
++filename.Kochi_Mincho=/usr/share/fonts/TTF/kochi-mincho.ttf
++filename.Sazanami_Mincho=/usr/share/fonts/TTF/sazanami-mincho.ttf
++filename.VL_Gothic=/usr/share/fonts/TTF/VL-Gothic-Regular.ttf
++filename.VL_PGothic=/usr/share/fonts/TTF/VL-PGothic-Regular.ttf
++
++filename.Lohit_Bengali=/usr/share/fonts/TTF/lohit_bn.ttf
++filename.Lohit_Gujarati=/usr/share/fonts/TTF/lohit_gu.ttf
++filename.Lohit_Hindi=/usr/share/fonts/TTF/lohit_hi.ttf
++filename.Lohit_Kannda=/usr/share/fonts/TTF/lohit_kn.ttf
++#filename.Lohit_Malayalam=/usr/share/fonts/TTF/lohit_ml.ttf
++filename.Lohit_Oriya=/usr/share/fonts/TTF/lohit_or.ttf
++filename.Lohit_Punjabi=/usr/share/fonts/TTF/lohit_pa.ttf
++filename.Lohit_Tamil=/usr/share/fonts/TTF/lohit_ta.ttf
++filename.Lohit_Telugu=/usr/share/fonts/TTF/lohit_te.ttf
++filename.LKLUG=/usr/share/fonts/TTF/lklug.ttf
++
++filename.LuxiSans-Regular=/usr/share/fonts/TTF/luxisr.ttf
++filename.LuxiSans-Bold=/usr/share/fonts/TTF/luxisb.ttf
++filename.LuxiSans-Oblique=/usr/share/fonts/TTF/luxisri.ttf
++filename.LuxiSans-BoldOblique=/usr/share/fonts/TTF/luxisbi.ttf
++filename.LuxiMono-Regular=/usr/share/fonts/TTF/luximr.ttf
++filename.LuxiMono-Bold=/usr/share/fonts/TTF/luximb.ttf
++filename.LuxiMono-Oblique=/usr/share/fonts/TTF/luximri.ttf
++filename.LuxiMono-BoldOblique=/usr/share/fonts/TTF/luximbi.ttf
++filename.LuxiSerif-Regular=/usr/share/fonts/TTF/luxirr.ttf
++filename.LuxiSerif-Bold=/usr/share/fonts/TTF/luxirb.ttf
++filename.LuxiSerif-Oblique=/usr/share/fonts/TTF/luxirri.ttf
++filename.LuxiSerif-BoldOblique=/usr/share/fonts/TTF/luxirbi.ttf
++
diff --git a/abs/extra/java7-openjdk/jdk7-openjdk.profile b/abs/extra/java7-openjdk/jdk7-openjdk.profile
new file mode 100644
index 0000000..91265cc
--- /dev/null
+++ b/abs/extra/java7-openjdk/jdk7-openjdk.profile
@@ -0,0 +1,6 @@
+export J2SDKDIR=/usr/lib/jvm/java-7-openjdk
+export J2REDIR=$J2SDKDIR/jre
+export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
+
+# For non-reparenting window managers, enable '_JAVA_AWT_WM_NONREPARENTING'
+# in /etc/profile.d/jre7.sh
diff --git a/abs/extra/java7-openjdk/jdk7-openjdk.profile.csh b/abs/extra/java7-openjdk/jdk7-openjdk.profile.csh
new file mode 100644
index 0000000..cc7dc8a
--- /dev/null
+++ b/abs/extra/java7-openjdk/jdk7-openjdk.profile.csh
@@ -0,0 +1 @@
+setenv J2SDKDIR "/usr/lib/jvm/java-7-openjdk"
diff --git a/abs/extra/java7-openjdk/jre7-openjdk-headless.install b/abs/extra/java7-openjdk/jre7-openjdk-headless.install
new file mode 100644
index 0000000..45f52fe
--- /dev/null
+++ b/abs/extra/java7-openjdk/jre7-openjdk-headless.install
@@ -0,0 +1,15 @@
+post_install() {
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/sbin/init-jks-keystore
+ fi
+}
+
+post_upgrade() {
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/sbin/init-jks-keystore
+ fi
+}
+
+#post_remove() {
+#
+#}
diff --git a/abs/extra/java7-openjdk/jre7-openjdk.install b/abs/extra/java7-openjdk/jre7-openjdk.install
new file mode 100644
index 0000000..d98e79e
--- /dev/null
+++ b/abs/extra/java7-openjdk/jre7-openjdk.install
@@ -0,0 +1,18 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ echo "when you use a non-reparenting window manager"
+ echo "set _JAVA_AWT_WM_NONREPARENTING=1 in"
+ echo "/etc/profile.d/jre.sh"
+# update-desktop-database -q
+}
+
+post_upgrade() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+# update-desktop-database -q
+}
+
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+# update-desktop-database -q
+}
diff --git a/abs/extra/java7-openjdk/jre7-openjdk.profile b/abs/extra/java7-openjdk/jre7-openjdk.profile
new file mode 100644
index 0000000..c86ce85
--- /dev/null
+++ b/abs/extra/java7-openjdk/jre7-openjdk.profile
@@ -0,0 +1,5 @@
+export J2REDIR=/usr/lib/jvm/java-7-openjdk/jre
+export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-openjdk/jre}
+
+# enable this for non-reparenting window managers
+#export _JAVA_AWT_WM_NONREPARENTING=1
diff --git a/abs/extra/java7-openjdk/jre7-openjdk.profile.csh b/abs/extra/java7-openjdk/jre7-openjdk.profile.csh
new file mode 100644
index 0000000..a9aed27
--- /dev/null
+++ b/abs/extra/java7-openjdk/jre7-openjdk.profile.csh
@@ -0,0 +1,5 @@
+setenv J2REDIR "/usr/lib/jvm/java-7-openjdk/jre"
+setenv JAVA_HOME "/usr/lib/jvm/java-7-openjdk/jre"
+
+# enable this for non-reparenting window managers
+#setenv _JAVA_AWT_WM_NONREPARENTING 1
diff --git a/abs/extra/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff b/abs/extra/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff
new file mode 100644
index 0000000..6cac91d
--- /dev/null
+++ b/abs/extra/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff
@@ -0,0 +1,36 @@
+--- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2011-08-06 15:46:01.000000000 +0200
++++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2011-08-06 15:59:26.000000000 +0200
+@@ -91,7 +91,7 @@
+ CHMOD = $(UTILS_COMMAND_PATH)chmod
+ CMP = $(UTILS_USR_BIN_PATH)cmp
+ COMM = $(UTILS_USR_BIN_PATH)comm
+-COMPRESS = $(UTILS_USR_BIN_PATH)compress
++COMPRESS = $(UTILS_COMMAND_PATH)compress
+ CP = $(UTILS_COMMAND_PATH)cp
+ CPIO = $(UTILS_COMMAND_PATH)cpio
+ CUT = $(UTILS_USR_BIN_PATH)cut
+@@ -101,13 +101,13 @@
+ DIRNAME = $(UTILS_USR_BIN_PATH)dirname
+ DUMP = $(UTILS_CCS_BIN_PATH)dump
+ ECHO = $(UTILS_COMMAND_PATH)echo
+-EGREP = $(UTILS_COMMAND_PATH)egrep
++EGREP = $(UTILS_USR_BIN_PATH)egrep
+ EXPR = $(UTILS_USR_BIN_PATH)expr
+ FILE = $(UTILS_USR_BIN_PATH)file
+ FIND = $(UTILS_USR_BIN_PATH)find
+ FMT = $(UTILS_COMMAND_PATH)fmt
+ GDB = $(UTILS_USR_BIN_PATH)gdb
+-GREP = $(UTILS_COMMAND_PATH)grep
++GREP = $(UTILS_USR_BIN_PATH)grep
+ GUNZIP = $(UTILS_COMMAND_PATH)gunzip
+ # GZIP is used for solaris. Linux and windows use tar czf
+ GZIP = $(UTILS_COMMAND_PATH)gzip
+@@ -140,7 +140,7 @@
+ TAIL = $(UTILS_USR_BIN_PATH)tail
+ TAR = $(UTILS_COMMAND_PATH)tar
+ TEST = $(UTILS_USR_BIN_PATH)test
+-TOUCH = $(UTILS_COMMAND_PATH)touch
++TOUCH = $(UTILS_USR_BIN_PATH)touch
+ TR = $(UTILS_USR_BIN_PATH)tr
+ TRUE = $(UTILS_COMMAND_PATH)true
+ UNAME = $(UTILS_COMMAND_PATH)uname
diff --git a/abs/extra/java7-openjdk/openjdk7_nonreparenting-wm.diff b/abs/extra/java7-openjdk/openjdk7_nonreparenting-wm.diff
new file mode 100644
index 0000000..22d54fc
--- /dev/null
+++ b/abs/extra/java7-openjdk/openjdk7_nonreparenting-wm.diff
@@ -0,0 +1,58 @@
+--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java.orig 2011-08-07 18:45:05.000000000 +0200
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java 2011-08-07 18:45:54.000000000 +0200
+@@ -103,7 +103,8 @@
+ COMPIZ_WM = 12,
+ LG3D_WM = 13,
+ CWM_WM = 14,
+- MUTTER_WM = 15;
++ MUTTER_WM = 15,
++ OTHER_NONREPARENTING_WM = 16;
+ public String toString() {
+ switch (WMID) {
+ case NO_WM:
+@@ -583,7 +584,7 @@
+ // TODO: according to wikipedia, compiz is now reparenting. This should
+ // probably be updated.
+ static boolean isNonReparentingWM() {
+- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM);
++ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM || XWM.getWMID() == XWM.OTHER_NONREPARENTING_WM);
+ }
+
+ /*
+@@ -771,9 +772,17 @@
+ * supports WIN or _NET wm spec.
+ */
+ else if (l_net_protocol.active()) {
+- awt_wmgr = XWM.OTHER_WM;
++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
++ } else {
++ awt_wmgr = XWM.OTHER_WM;
++ }
+ } else if (win.active()) {
+- awt_wmgr = XWM.OTHER_WM;
++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
++ } else {
++ awt_wmgr = XWM.OTHER_WM;
++ }
+ }
+ /*
+ * Check for legacy WMs.
+@@ -784,6 +793,8 @@
+ awt_wmgr = XWM.MOTIF_WM;
+ } else if (isOpenLook()) {
+ awt_wmgr = XWM.OPENLOOK_WM;
++ } else if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
+ } else {
+ awt_wmgr = XWM.OTHER_WM;
+ }
+@@ -1298,6 +1309,7 @@
+ res = new Insets(28, 6, 6, 6);
+ break;
+ case NO_WM:
++ case OTHER_NONREPARENTING_WM:
+ case LG3D_WM:
+ res = zeroInsets;
+ break;
diff --git a/abs/extra/libbluray-git/PKGBUILD b/abs/extra/libbluray-git/PKGBUILD
deleted file mode 100644
index c83dce3..0000000
--- a/abs/extra/libbluray-git/PKGBUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# Maintainer: Andrew Cook <ariscop@gmail.com>
-
-pkgname=libbluray-git
-pkgver=20101110
-pkgrel=1
-pkgdesc="Blu-Ray access library"
-arch=('i686' 'x86_64')
-depends=('doxygen')
-license=('LGPL')
-url="http://www.videolan.org/developers/libbluray.html"
-makedepends=('git')
-source=()
-md5sums=()
-provides=('libbluray')
-conflicts=('libbluray')
-
-_gitroot="git://git.videolan.org/libbluray.git"
-_gitname="libbluray"
-
-build() {
- msg "Connecting to GIT server..."
-
- if [ -d ${srcdir}/$_gitname ] ; then
- cd $_gitname && git pull origin
- msg "The local files are updated."
- else
- git clone $_gitroot
- fi
-
- msg "GIT checkout done or server timeout"
- msg "Starting make..."
-
- cd ${srcdir}/libbluray
- ./bootstrap
- ./configure --prefix=/
- make || return 1
- make DESTDIR=${pkgdir}/usr install || return 1
-}
diff --git a/abs/extra/libbluray/PKGBUILD b/abs/extra/libbluray/PKGBUILD
new file mode 100644
index 0000000..083cc1a
--- /dev/null
+++ b/abs/extra/libbluray/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 157790 2012-04-29 15:02:33Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Andrew Cook <ariscop@gmail.com>
+
+pkgname=libbluray
+pkgver=0.2.2
+pkgrel=1
+pkgdesc="Library to access Blu-Ray disks for video playback"
+arch=('i686' 'x86_64')
+url="http://www.videolan.org/developers/libbluray.html"
+license=('LGPL2.1')
+depends=('libxml2')
+makedepends=('apache-ant' 'jdk7-openjdk')
+optdepends=('java-environment: Blu-ray Disc Java support library')
+options=(!libtool)
+source=(ftp://ftp.videolan.org/pub/videolan/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2)
+sha512sums=('a27eaa929ef05c544beb966a24dfc5425546d6035bfb3e86dc60987b8a4761031ce27c3836a64f71cc76b5308c3cd75efb3bc1f238185819385477e64883888a')
+
+build() {
+ cd "$pkgname-$pkgver"
+
+ . /etc/profile.d/jdk.sh
+ ./configure --prefix=/usr \
+ --enable-bdjava \
+ --with-jdk=${JAVA_HOME} \
+ --disable-static
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ #install bdj
+ install -Dm644 src/.libs/libbluray.jar "$pkgdir/usr/share/java/libbluray.jar"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/libbonoboui/PKGBUILD b/abs/extra/libbonoboui/PKGBUILD
index fd99d28..149816c 100644
--- a/abs/extra/libbonoboui/PKGBUILD
+++ b/abs/extra/libbonoboui/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id$
+# $Id: PKGBUILD 148814 2012-02-05 11:51:34Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libbonoboui
pkgver=2.24.5
-pkgrel=1
+pkgrel=2
pkgdesc="User Interface library for Bonobo"
arch=('i686' 'x86_64')
license=('GPL' 'LGPL')
depends=('libgnomecanvas' 'libgnome')
-makedepends=('intltool' 'pkgconfig')
+makedepends=('intltool' 'pkg-config')
options=('!libtool' '!emptydirs')
url="http://www.gnome.org"
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2)
@@ -19,6 +19,10 @@ build() {
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --disable-static
make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
rm -f "${pkgdir}/usr/share/applications/bonobo-browser.desktop"
}
diff --git a/abs/extra/libcap-ng/PKGBUILD b/abs/extra/libcap-ng/PKGBUILD
new file mode 100644
index 0000000..1e3544b
--- /dev/null
+++ b/abs/extra/libcap-ng/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 139367 2011-10-01 18:59:37Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
+
+pkgname=libcap-ng
+pkgver=0.6.6
+pkgrel=1
+pkgdesc="A library intended to make programming with POSIX capabilities much easier than the traditional libcap"
+arch=('i686' 'x86_64')
+url="http://people.redhat.com/sgrubb/libcap-ng/"
+license=('GPL2' 'LGPL2.1')
+depends=('glibc')
+options=('!libtool')
+source=(http://people.redhat.com/sgrubb/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('eb71f967cecb44b4342baac98ef8cb0f')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ ./configure --prefix=/usr --enable-static=no --with-python=no
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+
+ make DESTDIR=$pkgdir install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/libcdio/PKGBUILD b/abs/extra/libcdio/PKGBUILD
index 1d4cacf..a532e0d 100644
--- a/abs/extra/libcdio/PKGBUILD
+++ b/abs/extra/libcdio/PKGBUILD
@@ -1,26 +1,34 @@
-# $Id: PKGBUILD 9268 2008-08-17 05:54:40Z allan $
-# Maintainer: damir <damir@archlinux.org>
+# $Id: PKGBUILD 150880 2012-02-23 13:48:06Z allan $
+# Maintainer:
# Contributor: damir <damir@archlinux.org>
pkgname=libcdio
-pkgver=0.82
+pkgver=0.83
pkgrel=1
pkgdesc="GNU Compact Disc Input and Control Library"
-arch=("i686" "x86_64")
-license=('GPL')
+arch=('i686' 'x86_64')
+license=('GPL3')
url="http://www.gnu.org/software/libcdio/"
-depends=('gcc-libs>=4.3.0' 'libcddb' 'ncurses')
+depends=('libcddb' 'ncurses')
options=('!libtool')
-source=(http://ftp.gnu.org/gnu/libcdio/$pkgname-$pkgver.tar.gz)
+install=libcdio.install
+source=(http://ftp.gnu.org/gnu/libcdio/${pkgname}-${pkgver}.tar.gz{,.sig}
+ libcdio-0.83-linking.patch)
+md5sums=('b9e0f1bccb142e697cd834fe56b6e6fb'
+ 'a7864a4b572a1e2a28cc0a05aa4a67d3'
+ '5a7f50209c03d5919d5b932f07871af7')
build() {
- cd $startdir/src/$pkgname-$pkgver
- ./configure --prefix=/usr --disable-vcd-info || return 1
- make || return 1
- make DESTDIR=$startdir/pkg install || return 1
- install -m644 libcdio_paranoia.pc libcdio_cdda.pc \
- ${startdir}/pkg/usr/lib/pkgconfig/ || return 1
- rm ${pkgdir}/usr/share/info/dir
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i $srcdir/libcdio-0.83-linking.patch
+ ./configure --prefix=/usr --disable-vcd-info --enable-cpp-progs
+ make
}
-md5sums=('1c29b18e01ab2b966162bc727bf3c360')
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make -j1 DESTDIR="${pkgdir}" install
+
+ sed -i "/LIBCDIO_SOURCE_PATH/s|.*|/* #undef LIBCDIO_SOURCE_PATH */|" \
+ $pkgdir/usr/include/cdio/cdio_config.h
+}
diff --git a/abs/extra/libcdio/libcdio-0.83-linking.patch b/abs/extra/libcdio/libcdio-0.83-linking.patch
new file mode 100644
index 0000000..84a0746
--- /dev/null
+++ b/abs/extra/libcdio/libcdio-0.83-linking.patch
@@ -0,0 +1,22 @@
+diff -Naur libcdio-0.83-orig/example/C++/OO/Makefile.in libcdio-0.83/example/C++/OO/Makefile.in
+--- libcdio-0.83-orig/example/C++/OO/Makefile.in 2011-10-27 18:02:31.000000000 +1000
++++ libcdio-0.83/example/C++/OO/Makefile.in 2012-02-18 11:10:07.369277231 +1000
+@@ -315,15 +315,15 @@
+
+ isofile2_SOURCES = isofile2.cpp
+ isofile2_LDADD = $(LIBISO9660PP_LIBS) $(LIBISO9660_LIBS) \
+- $(LIBCDIOPP_LIBS) $(LTLIBICONV)
++ $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS) $(LTLIBICONV)
+
+ isolist_SOURCES = isolist.cpp
+ isolist_LDADD = $(LIBISO9660PP_LIBS) $(LIBISO9660_LIBS) \
+- $(LIBCDIOPP_LIBS) $(LTLIBICONV)
++ $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS) $(LTLIBICONV)
+
+ iso4_SOURCES = iso4.cpp
+ iso4_LDADD = $(LIBISO9660PP_LIBS) $(LIBISO9660_LIBS) \
+- $(LIBCDIOPP_LIBS) $(LTLIBICONV)
++ $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS) $(LTLIBICONV)
+
+ mmc1_SOURCES = mmc1.cpp
+ mmc1_DEPENDENCIES = $(LIBCDIO_DEPS)
diff --git a/abs/extra/libcdio/libcdio.install b/abs/extra/libcdio/libcdio.install
new file mode 100644
index 0000000..33a4e1a
--- /dev/null
+++ b/abs/extra/libcdio/libcdio.install
@@ -0,0 +1,13 @@
+info_dir=/usr/share/info
+
+post_install() {
+ install-info ${info_dir}/libcdio.info.gz ${info_dir}/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete ${info_dir}/libcdio.info.gz ${info_dir}/dir 2> /dev/null
+}
diff --git a/abs/extra/libdvdcss/PKGBUILD b/abs/extra/libdvdcss/PKGBUILD
index 80772fa..c6b1807 100644
--- a/abs/extra/libdvdcss/PKGBUILD
+++ b/abs/extra/libdvdcss/PKGBUILD
@@ -1,24 +1,27 @@
-# $Id: PKGBUILD 37036 2009-04-30 04:50:40Z eric $
-# Maintainer: arjan <arjan@archlinux.org>
+# $Id: PKGBUILD 160018 2012-05-28 02:15:20Z eric $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: arjan <arjan@archlinux.org>
# Contributor Sarah Hay <sarahhay@mb.sympatico.ca>
pkgname=libdvdcss
-pkgver=1.2.10
-pkgrel=1.1
-pkgdesc="libdvdcss is a cross-platform library for transparent DVD device access with on-the-fly CSS decryption."
+pkgver=1.2.12
+pkgrel=1
+pkgdesc="A portable abstraction library for DVD decryption"
+url="http://www.videolan.org/libdvdcss"
arch=('i686' 'x86_64')
license=('GPL')
depends=('glibc')
options=('!libtool')
-source=(http://download.videolan.org/pub/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2)
-md5sums=('ebd5370b79ac5a83e5c61b24a214cf74')
-url="http://www.videolan.org/libdvdcss/"
-
+source=(http://download.videolan.org/pub/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2218a193900e3203aa10dc24cdf54275')
build() {
- cd $srcdir/$pkgname-$pkgver
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR=$pkgdir install || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/abs/extra/libebml/PKGBUILD b/abs/extra/libebml/PKGBUILD
index 5ea5a45..7302de3 100644
--- a/abs/extra/libebml/PKGBUILD
+++ b/abs/extra/libebml/PKGBUILD
@@ -1,23 +1,26 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: damir <damir@archlinux.org>
+# $Id: PKGBUILD 143796 2011-11-29 12:02:45Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: 03/08/04 <lefungus@altern.org>
pkgname=libebml
pkgver=1.2.2
-pkgrel=1
+pkgrel=2
pkgdesc="Extensible Binary Meta Language library"
arch=('i686' 'x86_64')
url="http://dl.matroska.org/downloads/libebml/"
-depends=('gcc-libs')
license=('LGPL')
-source=(${url}/${pkgname}-${pkgver}.tar.bz2)
+depends=('gcc-libs')
+source=("http://dl.matroska.org/downloads/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('726cc2bd1a525929ff35ff9854c0ebab')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}/make/linux
- make || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+
+ make
}
+
package() {
- cd ${srcdir}/${pkgname}-${pkgver}/make/linux
- make prefix=${pkgdir}/usr install
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+
+ make prefix="${pkgdir}/usr" install
}
-md5sums=('726cc2bd1a525929ff35ff9854c0ebab')
diff --git a/abs/extra/libffado/60-ffado.rules b/abs/extra/libffado/60-ffado.rules
new file mode 100644
index 0000000..6ab8ef8
--- /dev/null
+++ b/abs/extra/libffado/60-ffado.rules
@@ -0,0 +1,27 @@
+SUBSYSTEM!="firewire", GOTO="ffado_end"
+
+ATTR{vendor}=="0x000166", GROUP="audio", ENV{ID_FFADO}="1" # TC GROUP A/S
+ATTR{vendor}=="0x0001f2", GROUP="audio", ENV{ID_FFADO}="1" # Mark of the Unicorn, Inc.
+ATTR{vendor}=="0x0003db", GROUP="audio", ENV{ID_FFADO}="1" # Apogee Electronics Corp.
+ATTR{vendor}=="0x000595", GROUP="audio", ENV{ID_FFADO}="1" # Alesis Corporation
+ATTR{vendor}=="0x0007f5", GROUP="audio", ENV{ID_FFADO}="1" # Bridgeco Co AG
+ATTR{vendor}=="0x000a92", GROUP="audio", ENV{ID_FFADO}="1" # Presonus Corporation
+ATTR{vendor}=="0x000aac", GROUP="audio", ENV{ID_FFADO}="1" # TerraTec Electronic GmbH
+ATTR{vendor}=="0x000d6c", GROUP="audio", ENV{ID_FFADO}="1" # M-Audio
+ATTR{vendor}=="0x000f1b", GROUP="audio", ENV{ID_FFADO}="1" # Ego Systems Inc.
+ATTR{vendor}=="0x000ff2", GROUP="audio", ENV{ID_FFADO}="1" # Loud Technologies Inc.
+ATTR{vendor}=="0x001260", GROUP="audio", ENV{ID_FFADO}="1" # Stanton Magnetics,inc.
+ATTR{vendor}=="0x00130e", GROUP="audio", ENV{ID_FFADO}="1" # Focusrite Audio Engineering Limited
+ATTR{vendor}=="0x001486", GROUP="audio", ENV{ID_FFADO}="1" # Echo Digital Audio Corporation
+ATTR{vendor}=="0x001564", GROUP="audio", ENV{ID_FFADO}="1" # BEHRINGER Spezielle Studiotechnik GmbH
+ATTR{vendor}=="0x001c2d", GROUP="audio", ENV{ID_FFADO}="1" # FlexRadio Systems
+ATTR{vendor}=="0x001c6a", GROUP="audio", ENV{ID_FFADO}="1" # Weiss Engineering Ltd.
+ATTR{vendor}=="0x0040ab", GROUP="audio", ENV{ID_FFADO}="1" # ROLAND DG CORPORATION
+
+# The devices below abuse another Vendor's ID, and therefore we need more advanced rules for those.
+
+ATTR{vendor}=="0x00000a", ATTR{model}=="0x030000", ATTR{units}=="*0x00a02d:0x010001*", GROUP="audio", ENV{ID_FFADO}="1" # CME, Matrix K FW
+ATTR{vendor}=="0x00000f", ATTR{model}=="0x01006?", ATTR{units}=="*0x00a02d:0x010001*", GROUP="audio", ENV{ID_FFADO}="1" # Mackie, Onyx Firewire
+ATTR{vendor}=="0x000a35", ATTR{units}=="0x000a35:0x00000[12]", GROUP="audio", ENV{ID_FFADO}="1" # RME
+
+LABEL="ffado_end"
diff --git a/abs/extra/libffado/PKGBUILD b/abs/extra/libffado/PKGBUILD
index 4111264..772ebec 100644
--- a/abs/extra/libffado/PKGBUILD
+++ b/abs/extra/libffado/PKGBUILD
@@ -1,26 +1,34 @@
-# $Id: PKGBUILD 96817 2010-10-24 22:17:33Z schiv $
-# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# $Id: PKGBUILD 157813 2012-04-30 03:19:10Z heftig $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
# Contributor: galiyosha@gmail.com
# Contributor: Jon Kristian Nilsen <jokr.nilsen@gmail.com>
pkgname=libffado
pkgver=2.0.1
-pkgrel=2
+pkgrel=7
pkgdesc="Driver for FireWire audio devices"
arch=('i686' 'x86_64')
url="http://www.ffado.org/"
license=('GPL')
depends=('libiec61883' 'libavc1394' 'libsigc++'
- 'libxml++' 'alsa-lib' 'dbus')
-makedepends=('scons' 'pyqt')
-optdepends=('pyqt: mixer applet')
+ 'libxml++' 'alsa-lib' 'dbus')
+makedepends=('scons' 'python2-pyqt')
+optdepends=('python2: ffado-diag'
+ 'python2-pyqt: mixer applet')
provides=('ffado')
-source=(http://www.ffado.org/files/$pkgname-$pkgver.tar.gz)
-md5sums=('786f31facd417e6207e429f50af0e15e')
+source=("http://www.ffado.org/files/$pkgname-$pkgver.tar.gz"
+ "libffado-gcc47.patch" "fix-segfault-on-close.patch" '60-ffado.rules')
+md5sums=('786f31facd417e6207e429f50af0e15e'
+ '287bb3f506e31626c4b8f91f0e1d9407'
+ 'ac9763cb2dc2f3eb4e1894e30645c6f1'
+ 'f03a3e950801c4405b8934084651bca8')
build() {
cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 -i "$srcdir"/libffado-gcc47.patch
+ patch -p3 -i "$srcdir"/fix-segfault-on-close.patch
+
# hack to use CFLAGS without optimising
sed -i 's/-O2//g' SConstruct
@@ -35,13 +43,18 @@ build() {
sed -i 's:python support/tools:python2 support/tools:' \
support/tools/SConscript
- scons PREFIX=/usr #ENABLE_OPTIMIZATIONS=True
+ scons PREFIX=/usr
}
package() {
cd "$srcdir/$pkgname-$pkgver"
- scons DESTDIR="$pkgdir/" WILL_DEAL_WITH_XDG_MYSELF="True" install
+ scons DESTDIR="$pkgdir" WILL_DEAL_WITH_XDG_MYSELF="True" install
+
+ # add audio device rules
+ # see https://bugs.archlinux.org/task/26342
+ install -Dm644 "$srcdir/60-ffado.rules" \
+ "$pkgdir/usr/lib/udev/rules.d/60-ffado.rules"
# python2 fix
for i in $(grep '^#!.*bin.*python' -R "$pkgdir" | sed 's/:.*//'); do
@@ -53,7 +66,7 @@ package() {
"$pkgdir/usr/share/applications/ffadomixer.desktop"
install -Dm644 support/xdg/hi64-apps-ffado.png \
- "$pkgdir/usr/share/pixmaps/$pkgname.png"
+ "$pkgdir/usr/share/pixmaps/$pkgname.png"
}
# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/libffado/fix-segfault-on-close.patch b/abs/extra/libffado/fix-segfault-on-close.patch
new file mode 100644
index 0000000..c81b97e
--- /dev/null
+++ b/abs/extra/libffado/fix-segfault-on-close.patch
@@ -0,0 +1,64 @@
+Index: /trunk/libffado/src/debugmodule/debugmodule.h
+===================================================================
+--- /trunk/libffado/src/debugmodule/debugmodule.h (revision 1763)
++++ /trunk/libffado/src/debugmodule/debugmodule.h (revision 1999)
+@@ -283,6 +283,10 @@
+ void hexDumpQuadlets( quadlet_t *data_start, unsigned int length );
+
++class DebugModuleManager;
++
+ class DebugModule {
+ public:
++ friend class DebugModuleManager;
++
+ enum {
+ eDL_Message = DEBUG_LEVEL_MESSAGE,
+@@ -333,4 +337,5 @@
+ std::string m_name;
+ debug_level_t m_level;
++ DebugModuleManager* m_manager;
+ };
+
+Index: /trunk/libffado/src/debugmodule/debugmodule.cpp
+===================================================================
+--- /trunk/libffado/src/debugmodule/debugmodule.cpp (revision 1763)
++++ /trunk/libffado/src/debugmodule/debugmodule.cpp (revision 1999)
+@@ -84,5 +84,6 @@
+ // << endl;
+ // }
+- if ( !DebugModuleManager::instance()->unregisterModule( *this ) ) {
++
++ if (m_manager && !m_manager->unregisterModule( *this ) ) {
+ cerr << "Could not unregister DebugModule at DebugModuleManager"
+ << endl;
+@@ -263,12 +264,9 @@
+ DebugModuleManager::~DebugModuleManager()
+ {
+- // cleanin up leftover modules
+- for ( DebugModuleVectorIterator it = m_debugModules.begin();
+- it != m_debugModules.end();
+- ++it )
++ // cleaning up leftover modules
++ while (!m_debugModules.empty())
+ {
+- fprintf(stderr,"Cleaning up leftover debug module: %s\n",(*it)->getName().c_str());
+- m_debugModules.erase( it );
+- delete *it;
++ DebugModule *mod = m_debugModules.back();
++ unregisterModule(*mod);
+ }
+
+@@ -455,4 +453,6 @@
+ } else {
+ m_debugModules.push_back( &debugModule );
++ if (debugModule.m_manager == NULL)
++ debugModule.m_manager = this;
+ }
+ return true;
+@@ -469,4 +469,6 @@
+ if ( *it == &debugModule ) {
+ m_debugModules.erase( it );
++ if (debugModule.m_manager == this)
++ debugModule.m_manager = NULL;
+ return true;
+ }
diff --git a/abs/extra/libffado/libffado-gcc47.patch b/abs/extra/libffado/libffado-gcc47.patch
new file mode 100644
index 0000000..f296956
--- /dev/null
+++ b/abs/extra/libffado/libffado-gcc47.patch
@@ -0,0 +1,55 @@
+diff -Naur libffado-2.0.1-old/src/bebob/bebob_dl_mgr.cpp libffado-2.0.1/src/bebob/bebob_dl_mgr.cpp
+--- libffado-2.0.1-old/src/bebob/bebob_dl_mgr.cpp 2009-05-17 23:42:38.000000000 +1000
++++ libffado-2.0.1/src/bebob/bebob_dl_mgr.cpp 2012-04-29 15:26:29.011454798 +1000
+@@ -35,6 +35,7 @@
+
+ #include <cstdio>
+ #include <cstring>
++#include <unistd.h>
+
+ namespace BeBoB {
+ enum {
+diff -Naur libffado-2.0.1-old/src/ffadodevice.cpp libffado-2.0.1/src/ffadodevice.cpp
+--- libffado-2.0.1-old/src/ffadodevice.cpp 2008-11-23 21:25:32.000000000 +1000
++++ libffado-2.0.1/src/ffadodevice.cpp 2012-04-29 15:26:54.883998052 +1000
+@@ -34,6 +34,7 @@
+
+ #include <iostream>
+ #include <sstream>
++#include <unistd.h>
+
+ #include <assert.h>
+
+diff -Naur libffado-2.0.1-old/src/fireworks/fireworks_device.cpp libffado-2.0.1/src/fireworks/fireworks_device.cpp
+--- libffado-2.0.1-old/src/fireworks/fireworks_device.cpp 2009-11-23 00:40:08.000000000 +1000
++++ libffado-2.0.1/src/fireworks/fireworks_device.cpp 2012-04-29 15:27:24.123105334 +1000
+@@ -44,6 +44,7 @@
+ #define FIREWORKS_MIN_FIRMWARE_VERSION 0x04080000
+
+ #include <sstream>
++#include <unistd.h>
+ using namespace std;
+
+ // FireWorks is the platform used and developed by ECHO AUDIO
+diff -Naur libffado-2.0.1-old/src/libieee1394/IsoHandlerManager.cpp libffado-2.0.1/src/libieee1394/IsoHandlerManager.cpp
+--- libffado-2.0.1-old/src/libieee1394/IsoHandlerManager.cpp 2010-04-18 05:15:54.000000000 +1000
++++ libffado-2.0.1/src/libieee1394/IsoHandlerManager.cpp 2012-04-29 15:27:44.515816147 +1000
+@@ -34,6 +34,7 @@
+ #include "libutil/Configuration.h"
+
+ #include <cstring>
++#include <unistd.h>
+ #include <assert.h>
+
+ IMPL_DEBUG_MODULE( IsoHandlerManager, IsoHandlerManager, DEBUG_LEVEL_NORMAL );
+diff -Naur libffado-2.0.1-old/support/dbus/test-dbus.cpp libffado-2.0.1/support/dbus/test-dbus.cpp
+--- libffado-2.0.1-old/support/dbus/test-dbus.cpp 2008-04-27 03:30:41.000000000 +1000
++++ libffado-2.0.1/support/dbus/test-dbus.cpp 2012-04-29 15:28:31.531047923 +1000
+@@ -24,6 +24,7 @@
+ #include <argp.h>
+ #include <stdlib.h>
+ #include <iostream>
++#include <unistd.h>
+ #include <signal.h>
+
+ #include "controlclient.h"
diff --git a/abs/extra/libftdi/PKGBUILD b/abs/extra/libftdi/PKGBUILD
index b5a72da..61165b2 100644
--- a/abs/extra/libftdi/PKGBUILD
+++ b/abs/extra/libftdi/PKGBUILD
@@ -1,19 +1,28 @@
-# Contributor: Bernhard Walle <bernhard.walle@gmx.de>
+# $Id: PKGBUILD 153977 2012-03-21 07:09:24Z eric $
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
pkgname=libftdi
-pkgver=0.18
+pkgver=0.20
pkgrel=1
-pkgdesc="Library to program and control the FTDI USB controller"
-url="http://www.intra2net.com/de/produkte/opensource/ftdi/"
-license="GPL"
-depends=(libusb)
-arch=(i686 x86_64)
-source=(http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/$pkgname-$pkgver.tar.gz)
+pkgdesc="A library to talk to FTDI chips"
+arch=('i686' 'x86_64')
+url="http://www.intra2net.com/en/developer/libftdi/download.php"
+license=('GPL2' 'LGPL2.1')
+depends=('libusb-compat' 'gcc-libs')
+makedepends=('boost')
+options=('!libtool')
+source=(http://www.intra2net.com/en/developer/libftdi/download/$pkgname-$pkgver.tar.gz{,.sig})
+sha1sums=('4bc6ce70c98a170ada303fbd00b8428d8a2c1aa2'
+ '807d145147c9bee08b4cea4d7ca82ccaf1330f02')
build() {
- cd $startdir/src/$pkgname-$pkgver
- ./configure --prefix=/usr --sysconfdir=/etc
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i '/no-install/d' examples/Makefile.in
+ ./configure --prefix=/usr
make
- make DESTDIR=$startdir/pkg install
}
-# :mode=shellscript:
-md5sums=('916f65fa68d154621fc0cf1f405f2726')
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/abs/extra/libgdiplus/PKGBUILD b/abs/extra/libgdiplus/PKGBUILD
index d933fc1..84e3f45 100644
--- a/abs/extra/libgdiplus/PKGBUILD
+++ b/abs/extra/libgdiplus/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 95327 2010-10-18 17:52:42Z daniel $
+# $Id: PKGBUILD 148818 2012-02-05 11:51:42Z ibiru $
# Maintainer: Daniel Isenmann <daniel@archlinux.org>
pkgname=libgdiplus
-pkgver=2.8
+pkgver=2.10
pkgrel=2
pkgdesc="An Open Source Implementation of the GDI+ API"
arch=(i686 x86_64)
@@ -11,12 +11,19 @@ url="http://www.mono-project.com"
depends=('libtiff>=3.9.2-2' 'cairo>=1.8.10' 'giflib' 'glib2>=2.24.0' 'libexif')
makedepends=('pkgconfig')
options=('!libtool')
-source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('4fd70e5ab7847574c20453c349bc4c97')
+source=(http://download.mono-project.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2 libpng15.patch)
+md5sums=('451966e8f637e3a1f02d1d30f900255d'
+ 'a2d143676bbaceeb88b4c34069e93986')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 <../libpng15.patch
./configure --prefix=/usr --with-cairo=system || return 1
+
make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install || return 1
}
diff --git a/abs/extra/libgdiplus/__changelog b/abs/extra/libgdiplus/__changelog
deleted file mode 100644
index aecc073..0000000
--- a/abs/extra/libgdiplus/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-update to 2.8
diff --git a/abs/extra/libgdiplus/libpng15.patch b/abs/extra/libgdiplus/libpng15.patch
new file mode 100644
index 0000000..31a1c01
--- /dev/null
+++ b/abs/extra/libgdiplus/libpng15.patch
@@ -0,0 +1,164 @@
+$NetBSD: patch-aa,v 1.8 2011/01/21 10:21:51 wiz Exp $
+
+Fix build with png-1.5.
+
+--- src/pngcodec.c.orig 2010-11-03 16:52:54.000000000 +0000
++++ src/pngcodec.c
+@@ -116,10 +116,15 @@ gdip_load_png_properties (png_structp pn
+ bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr);
+ bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr);
+ #elif defined(PNG_pHYs_SUPPORTED)
+- if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) {
+- bitmap_data->image_flags |= ImageFlagsHasRealDPI;
+- bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254;
+- bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254;
++ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_pHYs)) {
++ png_uint_32 res_x, res_y;
++ int unit_type;
++ png_get_pHYs (png_ptr, info_ptr, &res_x, &res_y, &unit_type);
++ if (unit_type == PNG_RESOLUTION_METER) {
++ bitmap_data->image_flags |= ImageFlagsHasRealDPI;
++ bitmap_data->dpi_horz = res_x * 0.0254;
++ bitmap_data->dpi_vert = res_y * 0.0254;
++ }
+ }
+ #endif
+ /* default to screen resolution (if nothing was provided or available) */
+@@ -130,7 +135,7 @@ gdip_load_png_properties (png_structp pn
+ #if defined(PNG_iCCP_SUPPORTED)
+ {
+ png_charp name;
+- png_charp profile;
++ png_bytep profile;
+ png_uint_32 proflen;
+ int compression_type;
+
+@@ -292,6 +297,11 @@ gdip_load_png_image_from_file_or_stream
+ ImageFlags colourspace_flag;
+ int i;
+ int j;
++ png_colorp png_palette;
++ int png_num_palette;
++ png_bytep trans_alpha;
++ int num_trans;
++ png_color_16p trans_color;
+
+ width = png_get_image_width (png_ptr, info_ptr);
+ height = png_get_image_height (png_ptr, info_ptr);
+@@ -309,6 +319,8 @@ gdip_load_png_image_from_file_or_stream
+ }
+
+ /* Copy palette. */
++ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
++
+ num_colours = 1 << bit_depth;
+
+ if (png_get_color_type (png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) {
+@@ -321,8 +333,8 @@ gdip_load_png_image_from_file_or_stream
+ colourspace_flag = ImageFlagsColorSpaceRGB;
+
+ palette_entries = num_colours;
+- if (palette_entries > info_ptr->num_palette) {
+- palette_entries = info_ptr->num_palette;
++ if (palette_entries > png_num_palette) {
++ palette_entries = png_num_palette;
+ }
+
+ palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB));
+@@ -331,29 +343,30 @@ gdip_load_png_image_from_file_or_stream
+
+ for (i=0; i < palette_entries; i++) {
+ set_pixel_bgra (&palette->Entries[i], 0,
+- info_ptr->palette[i].blue,
+- info_ptr->palette[i].green,
+- info_ptr->palette[i].red,
++ png_palette[i].blue,
++ png_palette[i].green,
++ png_palette[i].red,
+ 0xFF); /* alpha */
+ }
+ }
+
++ png_get_tRNS (png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color);
+ /* Make sure transparency is respected. */
+- if (info_ptr->num_trans > 0) {
++ if (num_trans > 0) {
+ palette->Flags |= PaletteFlagsHasAlpha;
+ colourspace_flag |= ImageFlagsHasAlpha;
+
+- if (info_ptr->num_trans > info_ptr->num_palette) {
+- info_ptr->num_trans = info_ptr->num_palette;
++ if (num_trans > png_num_palette) {
++ num_trans = png_num_palette;
+ }
+
+- for (i=0; i < info_ptr->num_trans; i++) {
++ for (i=0; i < num_trans; i++) {
+ set_pixel_bgra(&palette->Entries[i], 0,
+- info_ptr->palette[i].blue,
+- info_ptr->palette[i].green,
+- info_ptr->palette[i].red,
++ png_palette[i].blue,
++ png_palette[i].green,
++ png_palette[i].red,
+ #if PNG_LIBPNG_VER > 10399
+- info_ptr->trans_alpha [i]); /* alpha */
++ trans_alpha [i]); /* alpha */
+ #else
+ info_ptr->trans[i]); /* alpha */
+ #endif
+@@ -398,6 +411,8 @@ gdip_load_png_image_from_file_or_stream
+ BYTE bit_depth;
+ int stride;
+ int interlace;
++ png_colorp png_palette;
++ int png_num_palette;
+ png_bytep *row_pointers;
+ BYTE *rawptr;
+ int i, j;
+@@ -490,32 +505,33 @@ gdip_load_png_image_from_file_or_stream
+ png_byte palette = 0;
+ png_byte pix = *rowp++;
+
++ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
+ palette = (pix >> 6) & 0x03;
+ set_pixel_bgra (rawptr, 0,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+
+ palette = (pix >> 4) & 0x03;
+ set_pixel_bgra (rawptr, 4,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+
+ palette = (pix >> 2) & 0x03;
+ set_pixel_bgra (rawptr, 8,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+
+ palette = pix & 0x03;
+ set_pixel_bgra (rawptr, 12,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+ rawptr += 16;
+ }
diff --git a/abs/extra/libgnome-keyring/PKGBUILD b/abs/extra/libgnome-keyring/PKGBUILD
index 58ee490..6a9dff1 100644
--- a/abs/extra/libgnome-keyring/PKGBUILD
+++ b/abs/extra/libgnome-keyring/PKGBUILD
@@ -1,24 +1,28 @@
-#$Id: PKGBUILD 91799 2010-09-28 06:50:31Z jgc $
+#$Id: PKGBUILD 156896 2012-04-23 09:08:34Z ibiru $
#Maintainer: Jan De Groot <jgc@archlinux.org>
pkgname=libgnome-keyring
-pkgver=2.32.0
+pkgver=3.4.1
pkgrel=1
pkgdesc="GNOME keyring client library"
arch=(i686 x86_64)
license=('GPL' 'LGPL')
-depends=('dbus-core>=1.2.0' 'libgcrypt>=1.4.6' 'glib2>=2.26.0')
-makedepends=('intltool' 'pkgconfig' 'python2' 'gtk-doc')
+depends=('dbus-core' 'glib2' 'libgcrypt')
+makedepends=('intltool' 'gobject-introspection')
options=('!libtool' '!emptydirs')
url="http://www.gnome.org"
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('56388c0d81ddfdb57d30e4963c83ecc1c18498aab99395420e0fff69929a0f0c')
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
+sha256sums=('e74a3e4521767fe5f05cc97cda8a355239567d9763ec628280ede8c2a4a379e8')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "$pkgname-$pkgver"
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --disable-static \
--libexecdir=/usr/lib/gnome-keyring
make
- make -j1 DESTDIR="${pkgdir}" install
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
}
diff --git a/abs/extra/libgnome/PKGBUILD b/abs/extra/libgnome/PKGBUILD
index 9197e0f..8c5dc71 100644
--- a/abs/extra/libgnome/PKGBUILD
+++ b/abs/extra/libgnome/PKGBUILD
@@ -1,28 +1,49 @@
-# $Id: PKGBUILD 30321 2009-03-18 21:50:51Z jgc $
+# $Id: PKGBUILD 151073 2012-02-24 17:58:01Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
-pkgname=libgnome
-pkgver=2.26.0
-pkgrel=2
-pkgdesc="Common libraries for GNOME"
-arch=(i686 x86_64)
+pkgbase=libgnome
+pkgname=('libgnome' 'libgnome-data')
+pkgver=2.32.1
+pkgrel=3
+arch=('i686' 'x86_64')
license=('LGPL')
-depends=('gnome-vfs>=2.24.1-2' 'esound>=0.2.41' 'libbonobo>=2.24.1')
-makedepends=('pkgconfig' 'intltool')
+makedepends=('intltool' 'gnome-vfs>=2.24.4' 'libbonobo>=2.32.1' 'gconf>=2.32.3' 'gvfs>=1.8.1' 'libcanberra>=0.28')
options=('!libtool' '!emptydirs')
url="http://www.gnome.org"
-install=libgnome.install
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('a5634fe9ddc54bbb726cbaaa35abc0b9')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('b2c63916866485793b87398266dd7778548c1734923c272a94d84ee011b6f7a4')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --disable-static || return 1
- make || return 1
- make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1
+ --localstatedir=/var --disable-static --disable-esd
+ make
+}
+
+package_libgnome() {
+ pkgdesc="Common libraries for GNOME"
+ depends=("libgnome-data=${pkgver}" 'gnome-vfs>=2.24.4' 'libbonobo>=2.32.1' 'gconf>=2.32.3' 'gvfs>=1.8.1' 'libcanberra>=0.28')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ make -C libgnome DESTDIR="${pkgdir}" install
+ make -C monikers DESTDIR="${pkgdir}" install
+}
+
+package_libgnome-data() {
+ pkgdesc="Common data from libgnome"
+ depends=('gconf')
+ install=libgnome.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ for dir in doc gnome-data po schemas
+ do
+ make -C $dir GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+ done
- install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
- gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain libgnome-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
- rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgbase}.schemas" --domain libgnome-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
}
diff --git a/abs/extra/libgnomecanvas/PKGBUILD b/abs/extra/libgnomecanvas/PKGBUILD
index 9a5fac2..0fc8f13 100644
--- a/abs/extra/libgnomecanvas/PKGBUILD
+++ b/abs/extra/libgnomecanvas/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id$
+# $Id: PKGBUILD 148820 2012-02-05 11:51:45Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libgnomecanvas
pkgver=2.30.3
-pkgrel=1
+pkgrel=2
pkgdesc="The GNOME Canvas library"
arch=(i686 x86_64)
license=('LGPL')
depends=('libglade>=2.6.4' 'libart-lgpl>=2.3.21')
-makedepends=('pkgconfig' 'intltool')
+makedepends=('pkg-config' 'intltool')
options=('!libtool')
url="http://www.gnome.org"
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2)
@@ -19,5 +19,9 @@ build() {
./configure --prefix=/usr --disable-static \
--enable-glade
make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/libgnomeui/PKGBUILD b/abs/extra/libgnomeui/PKGBUILD
index 7538c8a..22afc28 100644
--- a/abs/extra/libgnomeui/PKGBUILD
+++ b/abs/extra/libgnomeui/PKGBUILD
@@ -1,24 +1,28 @@
-# $Id: PKGBUILD 91726 2010-09-27 18:45:46Z ibiru $
+# $Id: PKGBUILD 148824 2012-02-05 11:51:52Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libgnomeui
-pkgver=2.24.4
+pkgver=2.24.5
pkgrel=1
pkgdesc="User Interface library for GNOME"
arch=('i686' 'x86_64')
license=('LGPL')
-depends=('libbonoboui>=2.24.3' 'libgnome-keyring>=2.31.92' 'libsm')
-makedepends=('intltool' 'pkgconfig')
+depends=('libbonoboui' 'libgnome-keyring' 'libsm')
+makedepends=('intltool' 'pkg-config')
options=('!libtool')
url="http://www.gnome.org"
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('a64dcb5af190ec0bfe2ba647ab09a90e4187336fa417d301abfb736be41283b2')
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/2.24/$pkgname-$pkgver.tar.bz2)
+sha256sums=('ae352f2495889e65524c979932c909f4629a58e64290fb0c95333373225d3c0f')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --disable-static \
--libexecdir=/usr/lib/libgnomeui
make
- make DESTDIR="${pkgdir}" install
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
}
diff --git a/abs/extra/liblqr/PKGBUILD b/abs/extra/liblqr/PKGBUILD
new file mode 100644
index 0000000..06d0863
--- /dev/null
+++ b/abs/extra/liblqr/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 150613 2012-02-18 22:56:34Z pierre $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=liblqr
+pkgver=0.4.1
+pkgrel=3
+pkgdesc="A seam-carving C/C++ library called Liquid Rescale"
+arch=('i686' 'x86_64')
+url="http://liblqr.wikidot.com/"
+license=('GPL')
+depends=('glib2')
+makedepends=('pkgconfig')
+options=('!libtool' '!emptydirs')
+source=("http://liblqr.wikidot.com/local--files/en:download-page/$pkgname-1-$pkgver.tar.bz2")
+md5sums=('0e24ed3c9fcdcb111062640764d7b87a')
+
+build() {
+ cd "$srcdir/$pkgname-1-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-1-$pkgver"
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/abs/extra/libmatroska/PKGBUILD b/abs/extra/libmatroska/PKGBUILD
index 7df70c8..78f4f25 100644
--- a/abs/extra/libmatroska/PKGBUILD
+++ b/abs/extra/libmatroska/PKGBUILD
@@ -1,23 +1,26 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: damir <damir@archlinux.org>
+# $Id: PKGBUILD 143895 2011-11-30 19:46:58Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor 03/08/04 <lefungus@altern.org>
pkgname=libmatroska
pkgver=1.3.0
-pkgrel=1
+pkgrel=2
pkgdesc="Matroska library"
arch=('i686' 'x86_64')
-license=('LGPL')
url="http://dl.matroska.org/downloads/libmatroska/"
-depends=('libebml>=1.0.0')
-source=(${url}/${pkgname}-${pkgver}.tar.bz2)
+license=('LGPL')
+depends=('libebml')
+source=("http://dl.matroska.org/downloads/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('f4a8c411f09d39c754eb726efd616043')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}/make/linux
- make sharedlib || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+
+ make sharedlib
}
+
package() {
- cd ${srcdir}/${pkgname}-${pkgver}/make/linux
- make prefix=${pkgdir}/usr install
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+
+ make prefix="${pkgdir}/usr" install
}
-md5sums=('f4a8c411f09d39c754eb726efd616043')
diff --git a/abs/extra/libmikmod/PKGBUILD b/abs/extra/libmikmod/PKGBUILD
index 129e226..e71aa0d 100644
--- a/abs/extra/libmikmod/PKGBUILD
+++ b/abs/extra/libmikmod/PKGBUILD
@@ -1,22 +1,43 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: arjan <arjan@archlinux.org>
+# $Id: PKGBUILD 149426 2012-02-07 16:55:08Z heftig $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
pkgname=libmikmod
pkgver=3.1.12
-pkgrel=2
+pkgrel=4
pkgdesc="A portable sound library"
license=('GPL' 'LGPL')
url="http://sourceforge.net/projects/mikmod/"
arch=('i686' 'x86_64')
depends=('glibc')
-source=(http://downloads.sourceforge.net/mikmod/${pkgname}-${pkgver}.tar.gz)
-md5sums=('9f3c740298260d5f88981fc0d51f6f16')
options=('!libtool')
+install=$pkgname.install
+source=(http://downloads.sourceforge.net/mikmod/${pkgname}-${pkgver}.tar.gz
+ libmikmod-3.1.12-64bit-fix.diff
+ libmikmod-3.1.12-exitcrash-fix.diff
+ libmikmod-3.1.12-loopingvolume-fix.diff
+ libmikmod-3.1.12-md_sngchn-fix.diff
+ libmikmod-CVE-2009-0179.patch)
+md5sums=('9f3c740298260d5f88981fc0d51f6f16'
+ 'dc7ffd8d6d355e9d6ec671b7f2b2adc7'
+ '03a4f5bfcecddf5f515672d6d477b7f7'
+ 'a837fd876cbd2ac27419b802504489db'
+ '076d39de19de36b880ed90297f1ee0d1'
+ 'fa91f4bc17164be32bec0ea7a73f2aaa')
build() {
- cd $startdir/src/$pkgname-$pkgver
- missing_dir="`pwd`" ./configure --prefix=/usr
+ cd $srcdir/$pkgname-$pkgver
+
+ # patches from sdl_mixer-1.2.11 source
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-64bit-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-exitcrash-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-loopingvolume-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-md_sngchn-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-CVE-2009-0179.patch
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
make || return 1
- make DESTDIR=$startdir/pkg install
+ make DESTDIR=$pkgdir install
}
diff --git a/abs/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff b/abs/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff
new file mode 100644
index 0000000..cd78008
--- /dev/null
+++ b/abs/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff
@@ -0,0 +1,47 @@
+Date: Sun, 04 Jul 2004 11:53:23 +0200
+From: Josselin Mouette
+Subject: Re: sdl 64bit problem [PATCH]
+
+Le sam, 03/07/2004 ïżœ 18:20 +0200, Hans-Frieder Vogt a ïżœcrit :
+> Hi list,
+>
+> I found the problem that lead to the distorted sound in tuxracer on AMD64. It
+> may have also been the cause for the other reported sound problems with SDL.
+> The problem is not in SDL, but in SDL-mixer.
+> There, music files (*.it, and probably others as well) are incorrectly read on
+> all 64 bit architectures but Alpha, due to an incorrect data type definition.
+> The attached patch should solve the problem for all 64 bit architectures on
+> Linux, since at least cpp defines _LP64 and __LP64__ for them.
+> _LP64 indicates that long ints and pointers are 64 bits, but integers are 32
+> bits.
+> I am not sure whether the usage of _LP64 is also standard for the commercial
+> compilers, and for other Unixes, but at least Solaris 9 defines _LP64 in the
+> 64 bit environment as well.
+>
+> Josselin,
+> could you include this patch into your next debian packages?
+
+diff -ru libmikmod-3.1.12.orig/include/mikmod.h.in libmikmod-3.1.12/include/mikmod.h.in
+--- libmikmod-3.1.12.orig/include/mikmod.h.in 2007-12-15 01:24:19.000000000 -0800
++++ libmikmod-3.1.12/include/mikmod.h.in 2009-10-05 00:18:56.000000000 -0700
+@@ -85,7 +85,7 @@
+
+ @DOES_NOT_HAVE_SIGNED@
+
+-#if defined(__arch64__) || defined(__alpha) || defined(__x86_64)
++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+ /* 64 bit architectures */
+
+ typedef signed char SBYTE; /* 1 byte, signed */
+diff -ru libmikmod-3.1.12.orig/include/mikmod_internals.h libmikmod-3.1.12/include/mikmod_internals.h
+--- libmikmod-3.1.12.orig/include/mikmod_internals.h 2007-12-15 04:24:51.000000000 -0800
++++ libmikmod-3.1.12/include/mikmod_internals.h 2009-10-05 00:19:15.000000000 -0700
+@@ -50,7 +50,7 @@
+ /*========== More type definitions */
+
+ /* SLONGLONG: 64bit, signed */
+-#if defined (__arch64__) || defined(__alpha)
++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+ typedef long SLONGLONG;
+ #define NATIVE_64BIT_INT
+ #elif defined(__WATCOMC__)
diff --git a/abs/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff b/abs/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff
new file mode 100644
index 0000000..fe62892
--- /dev/null
+++ b/abs/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff
@@ -0,0 +1,21 @@
+Date: 15 Apr 2002 11:01:19 +0200
+From: Guillaume Cottenceau <gc@mandrakesoft.com>
+
+Unfortunately, I should have double checked that the following
+fix (authored by Dave Goehrig <dave@cthulhu-burger.org>, not me),
+was really in the CVS... it's not, as of stable 1.2.3 at least.
+Please include it, it fixes a segfault on exiting a program which
+disabled MOD music during its execution.
+
+diff -ru libmikmod-3.1.12.orig/playercode/virtch_common.c libmikmod-3.1.12/playercode/virtch_common.c
+--- libmikmod-3.1.12.orig/playercode/virtch_common.c 2007-12-15 01:26:53.000000000 -0800
++++ libmikmod-3.1.12/playercode/virtch_common.c 2009-10-05 00:37:12.000000000 -0700
+@@ -347,7 +347,7 @@
+
+ void VC1_SampleUnload(SWORD handle)
+ {
+- if (handle<MAXSAMPLEHANDLES) {
++ if (Samples && handle<MAXSAMPLEHANDLES) {
+ if (Samples[handle])
+ free(Samples[handle]);
+ Samples[handle]=NULL;
diff --git a/abs/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff b/abs/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff
new file mode 100644
index 0000000..f0ce70e
--- /dev/null
+++ b/abs/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff
@@ -0,0 +1,15 @@
+Yi-Huang Han - Wed Oct 24 21:55:47 PDT 2001
+ * Fixed MOD music volume when looping
+
+diff -ru libmikmod-3.1.12.orig/playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- libmikmod-3.1.12.orig/playercode/mplayer.c 2009-10-05 00:19:59.000000000 -0700
++++ libmikmod-3.1.12/playercode/mplayer.c 2009-10-05 00:44:35.000000000 -0700
+@@ -3019,7 +3019,7 @@
+ {
+ MUTEX_LOCK(vars);
+ if (pf)
+- pf->volume=(volume<0)?0:(volume>128)?128:volume;
++ pf->volume=pf->initvolume=(volume<0)?0:(volume>128)?128:volume;
+ MUTEX_UNLOCK(vars);
+ }
+
diff --git a/abs/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff b/abs/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff
new file mode 100644
index 0000000..45cc355
--- /dev/null
+++ b/abs/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff
@@ -0,0 +1,112 @@
+This patch fixes "buffer overflow due to md_numchn - ID: 1630158"
+
+diff -ru libmikmod-3.1.12.orig/playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- libmikmod-3.1.12.orig/playercode/mplayer.c 2007-12-15 01:26:28.000000000 -0800
++++ libmikmod-3.1.12/playercode/mplayer.c 2009-10-04 23:48:36.000000000 -0700
+@@ -52,6 +52,8 @@
+ will wait */
+ /*static*/ MODULE *pf = NULL;
+
++#define NUMVOICES(mod) (md_sngchn < (mod)->numvoices ? md_sngchn : (mod)->numvoices)
++
+ #define HIGH_OCTAVE 2 /* number of above-range octaves */
+
+ static UWORD oldperiods[OCTAVE*2]={
+@@ -248,14 +250,14 @@
+ MP_VOICE *a;
+ ULONG t,k,tvol,pp;
+
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (((mod->voice[t].main.kick==KICK_ABSENT)||
+ (mod->voice[t].main.kick==KICK_ENV))&&
+ Voice_Stopped_internal(t))
+ return t;
+
+ tvol=0xffffffUL;t=-1;a=mod->voice;
+- for (k=0;k<md_sngchn;k++,a++) {
++ for (k=0;k<NUMVOICES(mod);k++,a++) {
+ /* allow us to take over a nonexisting sample */
+ if (!a->main.s)
+ return k;
+@@ -2249,12 +2251,12 @@
+
+ switch (dat) {
+ case 0x0: /* past note cut */
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (mod->voice[t].master==a)
+ mod->voice[t].main.fadevol=0;
+ break;
+ case 0x1: /* past note off */
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (mod->voice[t].master==a) {
+ mod->voice[t].main.keyoff|=KEY_OFF;
+ if ((!(mod->voice[t].venv.flg & EF_ON))||
+@@ -2263,7 +2265,7 @@
+ }
+ break;
+ case 0x2: /* past note fade */
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (mod->voice[t].master==a)
+ mod->voice[t].main.keyoff|=KEY_FADE;
+ break;
+@@ -2318,7 +2320,7 @@
+ SAMPLE *s;
+
+ mod->totalchn=mod->realchn=0;
+- for (channel=0;channel<md_sngchn;channel++) {
++ for (channel=0;channel<NUMVOICES(mod);channel++) {
+ aout=&mod->voice[channel];
+ i=aout->main.i;
+ s=aout->main.s;
+@@ -2736,7 +2738,7 @@
+ if (a->dct!=DCT_OFF) {
+ int t;
+
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if ((!Voice_Stopped_internal(t))&&
+ (mod->voice[t].masterchn==channel)&&
+ (a->main.sample==mod->voice[t].main.sample)) {
+@@ -2978,6 +2980,11 @@
+ if (!(mod->voice=(MP_VOICE*)_mm_calloc(md_sngchn,sizeof(MP_VOICE))))
+ return 1;
+
++ /* mod->numvoices was used during loading to clamp md_sngchn.
++ After loading it's used to remember how big mod->voice is.
++ */
++ mod->numvoices = md_sngchn;
++
+ Player_Init_internal(mod);
+ return 0;
+ }
+@@ -3086,7 +3093,7 @@
+ pf->patbrk=0;
+ pf->vbtick=pf->sngspd;
+
+- for (t=0;t<md_sngchn;t++) {
++ for (t=0;t<NUMVOICES(pf);t++) {
+ Voice_Stop_internal(t);
+ pf->voice[t].main.i=NULL;
+ pf->voice[t].main.s=NULL;
+@@ -3111,7 +3118,7 @@
+ pf->patbrk=0;
+ pf->vbtick=pf->sngspd;
+
+- for (t=0;t<md_sngchn;t++) {
++ for (t=0;t<NUMVOICES(pf);t++) {
+ Voice_Stop_internal(t);
+ pf->voice[t].main.i=NULL;
+ pf->voice[t].main.s=NULL;
+@@ -3138,7 +3145,7 @@
+ pf->sngpos=pos;
+ pf->vbtick=pf->sngspd;
+
+- for (t=0;t<md_sngchn;t++) {
++ for (t=0;t<NUMVOICES(pf);t++) {
+ Voice_Stop_internal(t);
+ pf->voice[t].main.i=NULL;
+ pf->voice[t].main.s=NULL;
diff --git a/abs/extra/libmikmod/libmikmod-CVE-2009-0179.patch b/abs/extra/libmikmod/libmikmod-CVE-2009-0179.patch
new file mode 100644
index 0000000..0c47e65
--- /dev/null
+++ b/abs/extra/libmikmod/libmikmod-CVE-2009-0179.patch
@@ -0,0 +1,33 @@
+diff -ur libmikmod-3.1.11.orig/loaders/load_xm.c libmikmod-3.1.11/loaders/load_xm.c
+--- libmikmod-3.1.11.orig/loaders/load_xm.c 2004-01-21 18:43:53.000000000 +0100
++++ libmikmod-3.1.11/loaders/load_xm.c 2008-04-16 04:30:45.000000000 +0200
+@@ -622,7 +622,8 @@
+ /* read the remainder of the header */
+ for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
+
+- if(_mm_eof(modreader)) {
++ /* last instrument is at the end of file in version 0x0104 */
++ if(_mm_eof(modreader) && (mh->version<0x0104 || t<of.numins-1)) {
+ free(nextwav);free(wh);
+ nextwav=NULL;wh=NULL;
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+diff -ur libmikmod-3.1.11.orig/playercode/mloader.c libmikmod-3.1.11/playercode/mloader.c
+--- libmikmod-3.1.11.orig/playercode/mloader.c 2004-01-21 18:43:53.000000000 +0100
++++ libmikmod-3.1.11/playercode/mloader.c 2008-04-16 04:30:45.000000000 +0200
+@@ -450,10 +450,12 @@
+ if (!l->Init || l->Init()) {
+ _mm_rewind(modreader);
+ ok = l->Load(curious);
+- /* propagate inflags=flags for in-module samples */
+- for (t = 0; t < of.numsmp; t++)
+- if (of.samples[t].inflags == 0)
+- of.samples[t].inflags = of.samples[t].flags;
++ if (ok) {
++ /* propagate inflags=flags for in-module samples */
++ for (t = 0; t < of.numsmp; t++)
++ if (of.samples[t].inflags == 0)
++ of.samples[t].inflags = of.samples[t].flags;
++ }
+ } else
+ ok = 0;
+
diff --git a/abs/extra/libmikmod/libmikmod.install b/abs/extra/libmikmod/libmikmod.install
new file mode 100644
index 0000000..7f80054
--- /dev/null
+++ b/abs/extra/libmikmod/libmikmod.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(mikmod.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/abs/extra/libmng/PKGBUILD b/abs/extra/libmng/PKGBUILD
index 8e954f4..7be67d7 100644
--- a/abs/extra/libmng/PKGBUILD
+++ b/abs/extra/libmng/PKGBUILD
@@ -1,6 +1,6 @@
-# $Id: PKGBUILD 63248 2010-01-16 20:44:09Z jgc $
-# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
-# Maintainer: judd <jvinet@zeroflux.org>
+# $Id: PKGBUILD 137860 2011-09-12 05:28:13Z eric $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
pkgname=libmng
pkgver=1.0.10
pkgrel=4
@@ -8,21 +8,24 @@ pkgdesc="A collection of routines used to create and manipulate MNG format graph
arch=('i686' 'x86_64')
url="http://www.libmng.com/"
license=('custom')
-depends=('zlib' 'libjpeg>=8')
-options=(!libtool)
-source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
-md5sums=('a464ae7d679781beebdf7440d144b7bd')
+depends=('zlib' 'libjpeg')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 automake-patch)
build() {
- cd $srcdir/$pkgname-$pkgver
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 < $srcdir/automake-patch || exit 1
ln -s makefiles/configure.in .
ln -s makefiles/Makefile.am .
autoreconf --force --install
./configure --prefix=/usr
- make || return 1
+ make
}
+
package() {
- cd $srcdir/$pkgname-$pkgver
- make DESTDIR=$pkgdir install || return 1
- install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
+md5sums=('eaf1476a3bb29f6190bca660e6abef16'
+ 'abd75e07394cc04e0d8ffa9a93b1e485')
diff --git a/abs/extra/libmng/__changelog b/abs/extra/libmng/__changelog
new file mode 100644
index 0000000..41fd872
--- /dev/null
+++ b/abs/extra/libmng/__changelog
@@ -0,0 +1 @@
+add automake_patch
diff --git a/abs/extra/libmng/automake-patch b/abs/extra/libmng/automake-patch
new file mode 100644
index 0000000..309983a
--- /dev/null
+++ b/abs/extra/libmng/automake-patch
@@ -0,0 +1,11 @@
+--- makefiles/configure.in 2005-01-30 05:28:00.000000000 -0500
++++ makefiles/configure.in.new 2012-05-03 16:36:01.000000000 -0400
+@@ -15,7 +15,7 @@
+ dnl Checks for programs.
+ AC_PROG_CC
+ AC_ISC_POSIX
+-AM_C_PROTOTYPES
++#AM_C_PROTOTYPES
+ if test "x$U" != "x"; then
+ AC_MSG_ERROR(Compiler not ANSI compliant)
+ fi
diff --git a/abs/extra/libnotify/PKGBUILD b/abs/extra/libnotify/PKGBUILD
index dd37ce8..b0af725 100644
--- a/abs/extra/libnotify/PKGBUILD
+++ b/abs/extra/libnotify/PKGBUILD
@@ -1,21 +1,26 @@
-# $Id: PKGBUILD 99716 2010-11-16 22:24:02Z ibiru $
+# $Id: PKGBUILD 154761 2012-03-30 16:37:09Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libnotify
-pkgver=0.5.2
+pkgver=0.7.5
pkgrel=1
pkgdesc="Desktop notification library"
-arch=(i686 x86_64)
-url="http://www.galago-project.org/"
+arch=('i686' 'x86_64')
+url="http://library.gnome.org/devel/notification-spec/"
license=('LGPL')
-depends=('dbus-glib>=0.92' 'gtk2>=2.22.1')
+depends=('gdk-pixbuf2')
+makedepends=('gtk3' 'gobject-introspection')
options=('!libtool')
-source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.5/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('1f6f1a2d6a0e009997c7ed31f6197f9bf09e9b45fb9cd54acabceea951d99062')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('4378cb47874ba4d5f759b7890d8d28d086e81d3f0bd4f6e84e5ab66d82ffb652')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr --disable-static
- make
- make DESTDIR="${pkgdir}" install
+ cd ${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd ${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/libsamplerate/ChangeLog b/abs/extra/libsamplerate/ChangeLog
deleted file mode 100644
index b76b041..0000000
--- a/abs/extra/libsamplerate/ChangeLog
+++ /dev/null
@@ -1,14 +0,0 @@
-2009-04-08 Eric Belanger <eric@archlinux.org>
-
- * libsamplerate 0.1.7-1
- * Upstream update
-
-2009-01-30 Eric Belanger <eric@archlinux.org>
-
- * libsamplerate 0.1.6-1
- * Upstream update
-
-2008-07-10 Eric Belanger <eric@archlinux.org>
-
- * libsamplerate 0.1.4-1
- * Upstream update
diff --git a/abs/extra/libsamplerate/PKGBUILD b/abs/extra/libsamplerate/PKGBUILD
index dc0f0fa..d157dc5 100644
--- a/abs/extra/libsamplerate/PKGBUILD
+++ b/abs/extra/libsamplerate/PKGBUILD
@@ -1,23 +1,31 @@
-# $Id: PKGBUILD 34235 2009-04-08 11:01:52Z eric $
-# Maintainer: Eric Belanger <eric@archlinux.org>
-# Contributor: Jason Chu <jchu@xentac.net>
+# $Id: PKGBUILD 136113 2011-08-23 03:20:21Z eric $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
pkgname=libsamplerate
-pkgver=0.1.7
+pkgver=0.1.8
pkgrel=1
pkgdesc="Secret Rabbit Code - aka Sample Rate Converter for audio"
arch=('i686' 'x86_64')
url="http://www.mega-nerd.com/SRC/index.html"
license=('GPL')
-depends=('libsndfile' 'flac>=1.1.4')
+depends=('libsndfile')
options=('!libtool')
source=(http://www.mega-nerd.com/SRC/libsamplerate-${pkgver}.tar.gz)
-md5sums=('ad093e60ec44f0a60de8e29983ddbc0f')
-sha1sums=('98a52392eb97f9ba724ca024b3af29a8a0cc0206')
+md5sums=('1c7fb25191b4e6e3628d198a66a84f47')
+sha1sums=('e5fe82c4786be2fa33ca6bd4897db4868347fe70')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/libsigc++/PKGBUILD b/abs/extra/libsigc++/PKGBUILD
index 7b133f9..308b99e 100644
--- a/abs/extra/libsigc++/PKGBUILD
+++ b/abs/extra/libsigc++/PKGBUILD
@@ -1,34 +1,35 @@
-# $Id: PKGBUILD 81927 2010-06-07 10:44:11Z jgc $
+# $Id: PKGBUILD 151408 2012-02-26 10:35:06Z pierre $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgbase=libsigc++
pkgname=('libsigc++' 'libsigc++-docs')
-pkgver=2.2.8
-pkgrel=1
-arch=(i686 x86_64)
+pkgver=2.2.10
+pkgrel=2
+arch=('i686' 'x86_64')
license=('LGPL')
url="http://libsigc.sourceforge.net/"
-source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.2/${pkgname}-${pkgver}.tar.bz2)
-makedepends=('gcc-libs>=4.5.0')
-options=(!libtool !emptydirs)
-sha256sums=('0fd75fd8249e09ae2fd3ffd20c3fbaea11b47d71ba5ba2340ed98b6bdca40ea8')
+makedepends=('gcc-libs')
+options=('!libtool' '!emptydirs')
+source=("http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.2/${pkgbase}-${pkgver}.tar.bz2")
+sha256sums=('d3d810c2ad469edfb2d4db29643bef189b7613019eadbd4a72823af3c73c959c')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr || return 1
- make || return 1
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr
+ make
}
-package_libsigc++() {
+package_libsigc++ () {
pkgdesc="Libsigc++ implements a full callback system for use in widget libraries - V2"
- depends=('gcc-libs>=4.5.0')
+ depends=('gcc-libs')
provides=("libsigc++2.0=${pkgver}")
replaces=('libsigc++2.0')
conflicts=('libsigc++2.0')
+
cd "${srcdir}/libsigc++-${pkgver}"
- sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile || return 1
- make DESTDIR="${pkgdir}" install || return 1
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile
+ make DESTDIR="${pkgdir}" install
}
package_libsigc++-docs() {
@@ -36,6 +37,7 @@ package_libsigc++-docs() {
provides=("libsigc++2.0-docs=${pkgver}")
replaces=('libsigc++2.0-docs')
conflicts=('libsigc++2.0-docs')
+
cd "${srcdir}/libsigc++-${pkgver}/docs"
- make DESTDIR="${pkgdir}" install || return 1
+ make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/libva/PKGBUILD b/abs/extra/libva/PKGBUILD
index 18c2971..5840a77 100644
--- a/abs/extra/libva/PKGBUILD
+++ b/abs/extra/libva/PKGBUILD
@@ -1,32 +1,33 @@
-# $Id$
+# $Id: PKGBUILD 161866 2012-06-16 00:18:39Z ibiru $
# Maintainer : Ionut Biru <ibiru@archlinux.org>
+
pkgname=libva
-pkgver=1.0.14
+pkgver=1.0.16
pkgrel=1
pkgdesc="Video Acceleration (VA) API for Linux"
arch=('i686' 'x86_64')
url="http://freedesktop.org/wiki/Software/vaapi"
license=('MIT')
-depends=('libgl' 'libdrm>=2.4.23' 'libxfixes')
+depends=('libegl' 'libgl' 'libdrm' 'libxfixes')
makedepends=('mesa')
-optdepends=('vdpau-video: VDPAU backend for VA API')
+optdepends=('vdpau-video: vdpau back-end for nvidia'
+ 'libva-driver-intel: back-end for intel cards')
options=('!libtool')
+install=libva.install
source=(http://cgit.freedesktop.org/libva/snapshot/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('9a7eba239bffa3b40d7a49e3bb4fb6fb')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "$pkgname-$pkgver"
./autogen.sh
- ./configure --prefix=/usr \
- --enable-i965-driver \
- --enable-glx
+ ./configure --prefix=/usr
make
}
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR="${pkgdir}" install
- install -m644 -D COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -m644 -D COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
}
# vim:set ts=2 sw=2 et:
+md5sums=('49d74e1e4f8a4937af7a62d457f61106')
diff --git a/abs/extra/libva/libva.install b/abs/extra/libva/libva.install
new file mode 100644
index 0000000..4d8b8e2
--- /dev/null
+++ b/abs/extra/libva/libva.install
@@ -0,0 +1,5 @@
+post_upgrade() {
+ if [ "$(vercmp $2 1.0.15-1)" -lt 0 ]; then
+ echo 'Starting with libva version 1.0.15, the intel back-end is now in libva-driver-intel.'
+ fi
+}
diff --git a/abs/extra/libvpx/PKGBUILD b/abs/extra/libvpx/PKGBUILD
index 1f00831..09c994f 100644
--- a/abs/extra/libvpx/PKGBUILD
+++ b/abs/extra/libvpx/PKGBUILD
@@ -1,7 +1,7 @@
-# $Id: PKGBUILD 97641 2010-10-31 21:07:06Z ibiru $
+# $Id: PKGBUILD 158895 2012-05-12 18:37:10Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=libvpx
-pkgver=0.9.5
+pkgver=1.1.0
pkgrel=1
pkgdesc="The VP8 Codec SDK"
arch=('i686' 'x86_64')
@@ -9,12 +9,12 @@ url="http://www.webmproject.org/"
license=('BSD')
depends=('glibc')
makedepends=('yasm')
-source=(http://webm.googlecode.com/files/${pkgname}-v${pkgver}.tar.bz2)
-sha1sums=('223965ff16737251afb3377c0800d1f8b5f84379')
+source=(http://webm.googlecode.com/files/$pkgname-v$pkgver.tar.bz2)
+sha1sums=('356af5f770c50cd021c60863203d8f30164f6021')
build() {
- cd "${srcdir}/${pkgname}-v${pkgver}"
- ./configure --enable-vp8 \
+ cd "$pkgname-v$pkgver"
+ ./configure --prefix=/usr --enable-vp8 \
--enable-runtime-cpu-detect \
--enable-shared \
--enable-postproc \
@@ -22,7 +22,10 @@ build() {
--disable-install-docs \
--disable-install-srcs
make
- make DIST_DIR="$pkgdir/usr" install
- install -D -m 0644 LICENSE "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
}
+package() {
+ cd "$pkgname-v$pkgver"
+ make DIST_DIR="$pkgdir/usr" install
+ install -D -m 0644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/abs/extra/libwmf/PKGBUILD b/abs/extra/libwmf/PKGBUILD
new file mode 100644
index 0000000..e6ac70a
--- /dev/null
+++ b/abs/extra/libwmf/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 148846 2012-02-05 11:52:43Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgname=libwmf
+pkgver=0.2.8.4
+pkgrel=9
+pkgdesc="A library for reading vector images in Microsoft's native Windows Metafile Format (WMF)"
+arch=('i686' 'x86_64')
+url="http://wvware.sourceforge.net/libwmf.html"
+license=('LGPL')
+depends=('libpng' 'libx11' 'libjpeg' 'gsfonts')
+makedepends=('gtk2' 'libxt')
+optdepends=('gdk-pixbuf2: for pixbuf loader')
+options=('!libtool' '!docs' '!emptydirs')
+install=libwmf.install
+source=(http://downloads.sourceforge.net/sourceforge/wvware/${pkgname}-${pkgver}.tar.gz
+ libwmf-0.2.8.4-libpng-1.5.patch libwmf-0.2.8.4-useafterfree.patch)
+sha1sums=('822ab3bd0f5e8f39ad732f2774a8e9f18fc91e89'
+ '42aa4c2a82e4e14044c875a7f439baea732a355a'
+ 'ea6d28880840e86c96f9079bfd591da54dcffa5c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/libwmf-0.2.8.4-libpng-1.5.patch"
+ patch -p1 -i "${srcdir}/libwmf-0.2.8.4-useafterfree.patch"
+ ./configure --prefix=/usr \
+ --with-gsfontdir=/usr/share/fonts/Type1 \
+ --with-fontdir=/usr/share/fonts/Type1 \
+ --with-gsfontmap=/usr/share/ghostscript/8.15/lib/Fontmap.GS
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ #Remove fonts, these are in gsfonts
+ rm -rf "${pkgdir}/usr/share/fonts"
+ #Remove static GTK loader, can't use it anyways
+ rm -f "${pkgdir}"/usr/lib/gtk-2.0/*/loaders/io-wmf.a
+}
diff --git a/abs/extra/libwmf/libwmf-0.2.8.4-libpng-1.5.patch b/abs/extra/libwmf/libwmf-0.2.8.4-libpng-1.5.patch
new file mode 100644
index 0000000..3528c74
--- /dev/null
+++ b/abs/extra/libwmf/libwmf-0.2.8.4-libpng-1.5.patch
@@ -0,0 +1,12 @@
+diff -urN libwmf-0.2.8.4.old/src/ipa/ipa/bmp.h libwmf-0.2.8.4/src/ipa/ipa/bmp.h
+--- libwmf-0.2.8.4.old/src/ipa/ipa/bmp.h 2011-05-23 19:14:23.000000000 +0200
++++ libwmf-0.2.8.4/src/ipa/ipa/bmp.h 2011-05-23 19:15:11.000000000 +0200
+@@ -66,7 +66,7 @@
+ return;
+ }
+
+- if (setjmp (png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ { WMF_DEBUG (API,"Failed to write bitmap as PNG! (setjmp failed)");
+ png_destroy_write_struct (&png_ptr,&info_ptr);
+ wmf_free (API,buffer);
diff --git a/abs/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch b/abs/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch
new file mode 100644
index 0000000..328c541
--- /dev/null
+++ b/abs/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch
@@ -0,0 +1,10 @@
+--- libwmf-0.2.8.4/src/extra/gd/gd_clip.c.CVE-2009-1364-im-clip-list 2009-04-24 04:06:44.000000000 -0400
++++ libwmf-0.2.8.4/src/extra/gd/gd_clip.c 2009-04-24 04:08:30.000000000 -0400
+@@ -70,6 +70,7 @@ void gdClipSetAdd(gdImagePtr im,gdClipRe
+ { more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle));
+ if (more == 0) return;
+ im->clip->max += 8;
++ im->clip->list = more;
+ }
+ im->clip->list[im->clip->count] = (*rect);
+ im->clip->count++;
diff --git a/abs/extra/libwmf/libwmf.install b/abs/extra/libwmf/libwmf.install
new file mode 100644
index 0000000..9c99a90
--- /dev/null
+++ b/abs/extra/libwmf/libwmf.install
@@ -0,0 +1,13 @@
+post_install() {
+ if [ -x usr/bin/gdk-pixbuf-query-loaders ]; then
+ gdk-pixbuf-query-loaders > etc/gtk-2.0/gdk-pixbuf.loaders
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/abs/extra/libxml++/PKGBUILD b/abs/extra/libxml++/PKGBUILD
index 15e8bab..198544c 100644
--- a/abs/extra/libxml++/PKGBUILD
+++ b/abs/extra/libxml++/PKGBUILD
@@ -1,39 +1,39 @@
-# $Id: PKGBUILD 79727 2010-05-06 12:45:59Z jgc $
+# $Id: PKGBUILD 137178 2011-09-06 09:14:31Z ibiru $
# Maintainer: damir <damir@archlinux.org>
pkgbase=libxml++
pkgname=('libxml++' 'libxml++-docs')
-pkgver=2.30.1
+pkgver=2.34.2
pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL')
url="http://libxmlplusplus.sourceforge.net/"
-makedepends=('pkgconfig' 'glibmm-docs' 'libxml2>=2.7.7' 'glibmm>=2.24.2')
+makedepends=('pkgconfig' 'glibmm-docs' 'libxml2' 'glibmm')
options=('!libtool' '!emptydirs')
-source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.30/${pkgbase}-${pkgver}.tar.bz2)
-sha256sums=('433f0e36486573a81582d62c83dc741d50bf795ce1a2dca076a54b16c28ab90a')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.34/${pkgbase}-${pkgver}.tar.xz)
+sha256sums=('77daba20ab76631071d4ed4cc18fa2e981160ca05ae661e8d146f2b0728f9baa')
build() {
cd "${srcdir}/${pkgbase}-${pkgver}"
- ./configure --prefix=/usr || return 1
- make || return 1
+ ./configure --prefix=/usr
+ make
}
package_libxml++() {
pkgdesc="C++ bindings to libxml2"
- depends=('libxml2>=2.7.7' 'glibmm>=2.24.2')
+ depends=('libxml2' 'glibmm')
replaces=('libxml++2')
provides=("libxml++2=${pkgver}")
conflicts=('libxml++2')
cd "${srcdir}/${pkgbase}-${pkgver}"
- sed -i -e 's/install-data-am: install-data-local install-dist_referenceDATA/install-data-am: /' Makefile || return 1
- make DESTDIR="${pkgdir}" install || return 1
+ sed -i -e 's/install-data-am: install-data-local install-dist_referenceDATA/install-data-am: /' Makefile
+ make DESTDIR="${pkgdir}" install
}
package_libxml++-docs() {
pkgdesc="Developer documentation for libxml++"
depends=('glibmm-docs')
cd "${srcdir}/${pkgbase}-${pkgver}"
- make DESTDIR="${pkgdir}" install-data-local install-dist_referenceDATA || return 1
+ make DESTDIR="${pkgdir}" install-data-local install-dist_referenceDATA
}
diff --git a/abs/extra/libyaml/PKGBUILD b/abs/extra/libyaml/PKGBUILD
new file mode 100644
index 0000000..73d2c7b
--- /dev/null
+++ b/abs/extra/libyaml/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 66208 2012-02-23 03:22:37Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Michal Bozon <michal.bozon__at__gmail.com>
+
+pkgname=libyaml
+pkgver=0.1.4
+pkgrel=2
+pkgdesc="YAML 1.1 library"
+arch=('i686' 'x86_64')
+url="http://pyyaml.org/wiki/LibYAML"
+license=('MIT')
+source=(http://pyyaml.org/download/libyaml/yaml-$pkgver.tar.gz)
+md5sums=('36c852831d02cf90508c29852361d01b')
+
+build() {
+ cd "$srcdir/yaml-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/yaml-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -m644 -D LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
+
diff --git a/abs/extra/llvm/PKGBUILD b/abs/extra/llvm/PKGBUILD
new file mode 100644
index 0000000..515dbc7
--- /dev/null
+++ b/abs/extra/llvm/PKGBUILD
@@ -0,0 +1,226 @@
+# $Id: PKGBUILD 159472 2012-05-24 20:02:15Z foutrelis $
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Sebastian Nowicki <sebnow@gmail.com>
+# Contributor: Devin Cofer <ranguvar{AT]archlinux[DOT}us>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+# Contributor: Geoffroy Carrier <geoffroy.carrier@aur.archlinux.org>
+# Contributor: Tomas Lindquist Olsen <tomas@famolsen.dk>
+# Contributor: Roberto Alsina <ralsina@kde.org>
+# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
+
+pkgname=('llvm' 'llvm-ocaml' 'clang' 'clang-analyzer')
+pkgver=3.1
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://llvm.org/"
+license=('custom:University of Illinois/NCSA Open Source License')
+makedepends=('libffi' 'python2' 'ocaml')
+source=(http://llvm.org/releases/$pkgver/$pkgname-$pkgver.src.tar.gz
+ http://llvm.org/releases/$pkgver/clang-$pkgver.src.tar.gz
+ http://dev.archlinux.org/~foutrelis/sources/compiler-rt/compiler-rt-$pkgver.src.tar.xz
+ llvm-Config-config.h
+ llvm-Config-llvm-config.h
+ cindexer-clang-path.patch
+ clang-pure64.patch
+ enable-lto.patch
+ clang-3.1-fix-libprofile_rt.a-location.patch)
+sha256sums=('1ea05135197b5400c1f88d00ff280d775ce778f8f9ea042e25a1e1e734a4b9ab'
+ 'ff63e215dcd3e2838ffdea38502f8d35bab17e487f3c3799579961e452d5a786'
+ '563d8a5ef86123ed8775e115ad7f90c1aa3e80f70b4e587f1bccab2c10753558'
+ '312574e655f9a87784ca416949c505c452b819fad3061f2cde8aced6540a19a3'
+ '597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48'
+ '3074df5322900e087377a8e03a02115463ccc0011c25917c2f06df11facd9b92'
+ '288a82fbff17bc554f5863734246500e637882af33ee8511019d5e0d6cd20524'
+ 'f7145e203ffb4ce2c01976027f7840a9520e5341a9945f2459b6b11e5422d5b7'
+ '0d32ad283566357ca1bfbeb4cbe6b0b961943b79d3d718ed0435101c05629137')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver.src"
+
+ # At the present, clang must reside inside the LLVM source code tree to build
+ # See http://llvm.org/bugs/show_bug.cgi?id=4840
+ rm -rf tools/clang
+ cp -r "$srcdir/clang-$pkgver.src" tools/clang
+
+ rm -rf projects/compiler-rt
+ cp -r "$srcdir/compiler-rt-$pkgver.src" projects/compiler-rt
+
+ # Fix symbolic links from OCaml bindings to LLVM libraries
+ sed -i 's:\$(PROJ_libdir):/usr/lib/llvm:' bindings/ocaml/Makefile.ocaml
+
+ # Fix installation directories, ./configure doesn't seem to set them right
+ sed -i -e 's:\$(PROJ_prefix)/etc/llvm:/etc/llvm:' \
+ -e 's:\$(PROJ_prefix)/lib:$(PROJ_prefix)/lib/llvm:' \
+ -e 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
+ Makefile.config.in
+ sed -i '/ActiveLibDir = ActivePrefix/s:lib:lib/llvm:' \
+ tools/llvm-config/llvm-config.cpp
+ sed -i 's:LLVM_LIBDIR="${prefix}/lib":LLVM_LIBDIR="${prefix}/lib/llvm":' \
+ autoconf/configure.ac \
+ configure
+
+ # Fix insecure rpath (http://bugs.archlinux.org/task/14017)
+ sed -i 's:$(RPATH) -Wl,$(\(ToolDir\|LibDir\|ExmplDir\))::g' Makefile.rules
+
+ # Fix clang path in CIndexer.cpp (https://bugs.archlinux.org/task/22799)
+ patch -d tools/clang -Np0 -i "$srcdir/cindexer-clang-path.patch"
+
+ if [[ $CARCH == x86_64 ]]; then
+ # Adjust linker path
+ patch -d tools/clang -Np0 -i "$srcdir/clang-pure64.patch"
+ fi
+
+ # Make -flto work
+ # Use gold instead of default linker, and always use the plugin
+ patch -d tools/clang -Np0 -i "$srcdir/enable-lto.patch"
+
+ # Fix FS#29984: [clang] -coverage is broken
+ patch -d tools/clang -Np1 -i \
+ "$srcdir/clang-3.1-fix-libprofile_rt.a-location.patch"
+
+ # Apply strip option to configure
+ _optimized_switch="enable"
+ [[ $(check_option strip) == n ]] && _optimized_switch="disable"
+
+ # Include location of libffi headers in CPPFLAGS
+ export CPPFLAGS="$CPPFLAGS $(pkg-config --cflags libffi)"
+
+ # Use Python 2
+ mkdir "$srcdir/python2-path"
+ ln -s /usr/bin/python2 "$srcdir/python2-path/python"
+ export PATH="$srcdir/python2-path:$PATH"
+
+ # Force the use of GCC instead of clang
+ CC=gcc CXX=g++ \
+ ./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib/llvm \
+ --sysconfdir=/etc \
+ --enable-shared \
+ --enable-libffi \
+ --enable-targets=all \
+ --disable-expensive-checks \
+ --disable-debug-runtime \
+ --disable-assertions \
+ --with-binutils-include=/usr/include \
+ --$_optimized_switch-optimized
+
+ make REQUIRES_RTTI=1
+}
+
+package_llvm() {
+ pkgdesc="Low Level Virtual Machine"
+ depends=('perl' 'libffi')
+
+ cd "$srcdir/$pkgname-$pkgver.src"
+
+ # We move the clang directory out of the tree so it won't get installed and
+ # then we bring it back in for the clang package
+ mv tools/clang "$srcdir"
+
+ # -j1 is due to race conditions during the installation of the OCaml bindings
+ make -j1 DESTDIR="$pkgdir" install
+ mv "$srcdir/clang" tools
+
+ # OCaml bindings go to a separate package
+ rm -rf "$srcdir"/{ocaml,ocamldoc}
+ mv "$pkgdir"/usr/{lib/ocaml,share/doc/llvm/ocamldoc} "$srcdir"
+
+ # Remove duplicate files installed by the OCaml bindings
+ rm "$pkgdir"/usr/{lib/llvm/libllvm*,share/doc/llvm/ocamldoc.tar.gz}
+
+ # Fix permissions of static libs
+ chmod -x "$pkgdir"/usr/lib/llvm/*.a
+
+ # Get rid of example Hello transformation
+ rm "$pkgdir"/usr/lib/llvm/*LLVMHello.*
+
+ # Add ld.so.conf.d entry
+ install -d "$pkgdir/etc/ld.so.conf.d"
+ echo /usr/lib/llvm >"$pkgdir/etc/ld.so.conf.d/llvm.conf"
+
+ # Symlink LLVMgold.so into /usr/lib/bfd-plugins
+ # (https://bugs.archlinux.org/task/28479)
+ install -d "$pkgdir/usr/lib/bfd-plugins"
+ ln -s ../llvm/LLVMgold.so "$pkgdir/usr/lib/bfd-plugins/LLVMgold.so"
+
+ if [[ $CARCH == x86_64 ]]; then
+ # Needed for multilib (https://bugs.archlinux.org/task/29951)
+ # Header stubs are taken from Fedora
+ for _header in config llvm-config; do
+ mv "$pkgdir/usr/include/llvm/Config/$_header"{,-64}.h
+ cp "$srcdir/llvm-Config-$_header.h" \
+ "$pkgdir/usr/include/llvm/Config/$_header.h"
+ done
+ fi
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+package_llvm-ocaml() {
+ pkgdesc="OCaml bindings for LLVM"
+ depends=("llvm=$pkgver-$pkgrel" 'ocaml')
+
+ cd "$srcdir/llvm-$pkgver.src"
+
+ install -d "$pkgdir"/{usr/lib,usr/share/doc/llvm}
+ cp -r "$srcdir/ocaml" "$pkgdir/usr/lib"
+ cp -r "$srcdir/ocamldoc" "$pkgdir/usr/share/doc/llvm"
+
+ # Remove execute bit from static libraries
+ chmod -x "$pkgdir"/usr/lib/ocaml/libllvm*.a
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/llvm-ocaml/LICENSE"
+}
+
+package_clang() {
+ pkgdesc="C language family frontend for LLVM"
+ url="http://clang.llvm.org/"
+ depends=("llvm=$pkgver-$pkgrel" 'gcc')
+
+ # Fix installation path for clang docs
+ sed -i 's:$(PROJ_prefix)/share/doc/llvm:$(PROJ_prefix)/share/doc/clang:' \
+ "$srcdir/llvm-$pkgver.src/Makefile.config"
+
+ cd "$srcdir/llvm-$pkgver.src/tools/clang"
+ make DESTDIR="$pkgdir" install
+
+ # Fix permissions of static libs
+ chmod -x "$pkgdir"/usr/lib/llvm/*.a
+
+ # Revert the path change in case we want to do a repackage later
+ sed -i 's:$(PROJ_prefix)/share/doc/clang:$(PROJ_prefix)/share/doc/llvm:' \
+ "$srcdir/llvm-$pkgver.src/Makefile.config"
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/clang/LICENSE"
+}
+
+package_clang-analyzer() {
+ pkgdesc="A source code analysis framework"
+ url="http://clang-analyzer.llvm.org/"
+ depends=("clang=$pkgver-$pkgrel" 'python2')
+
+ cd "$srcdir/llvm-$pkgver.src/tools/clang"
+
+ install -d "$pkgdir"/usr/{bin,lib/clang-analyzer}
+ for _tool in scan-{build,view}; do
+ cp -r tools/$_tool "$pkgdir/usr/lib/clang-analyzer/"
+ ln -s /usr/lib/clang-analyzer/$_tool/$_tool "$pkgdir/usr/bin/"
+ done
+
+ # Use Python 2
+ sed -i \
+ -e 's|env python$|&2|' \
+ -e 's|/usr/bin/python$|&2|' \
+ "$pkgdir/usr/lib/clang-analyzer/scan-view/scan-view" \
+ "$pkgdir/usr/lib/clang-analyzer/scan-build/set-xcode-analyzer"
+
+ # Compile Python scripts
+ python2 -m compileall "$pkgdir/usr/lib/clang-analyzer"
+ python2 -O -m compileall "$pkgdir/usr/lib/clang-analyzer"
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/clang-analyzer/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/llvm/bug-9869-operator-h-c++0x.patch b/abs/extra/llvm/bug-9869-operator-h-c++0x.patch
new file mode 100644
index 0000000..b95d7d7
--- /dev/null
+++ b/abs/extra/llvm/bug-9869-operator-h-c++0x.patch
@@ -0,0 +1,57 @@
+--- llvm/trunk/include/llvm/Operator.h 2011/02/07 16:40:21 125006
++++ llvm/trunk/include/llvm/Operator.h 2011/05/08 01:59:22 131062
+@@ -186,28 +186,46 @@
+ };
+
+ class AddOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {
++ ~AddOperator(); // DO NOT IMPLEMENT
++};
+ class SubOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {
++ ~SubOperator(); // DO NOT IMPLEMENT
++};
+ class MulOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {
++ ~MulOperator(); // DO NOT IMPLEMENT
++};
+ class ShlOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {
++ ~ShlOperator(); // DO NOT IMPLEMENT
++};
+
+
+ class SDivOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {
++ ~SDivOperator(); // DO NOT IMPLEMENT
++};
+ class UDivOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {
++ ~UDivOperator(); // DO NOT IMPLEMENT
++};
+ class AShrOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {
++ ~AShrOperator(); // DO NOT IMPLEMENT
++};
+ class LShrOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {
++ ~LShrOperator(); // DO NOT IMPLEMENT
++};
+
+
+
+ class GEPOperator
+ : public ConcreteOperator<Operator, Instruction::GetElementPtr> {
++ ~GEPOperator(); // DO NOT IMPLEMENT
++
+ enum {
+ IsInBounds = (1 << 0)
+ };
diff --git a/abs/extra/llvm/cindexer-clang-path.patch b/abs/extra/llvm/cindexer-clang-path.patch
new file mode 100644
index 0000000..ddaab69
--- /dev/null
+++ b/abs/extra/llvm/cindexer-clang-path.patch
@@ -0,0 +1,10 @@
+--- tools/libclang/CIndexer.cpp.orig 2011-04-07 13:08:24.000000000 +0300
++++ tools/libclang/CIndexer.cpp 2011-04-07 13:11:52.224884642 +0300
+@@ -80,6 +80,7 @@ std::string CIndexer::getClangResourcesP
+
+ // We now have the CIndex directory, locate clang relative to it.
+ LibClangPath.eraseComponent();
++ LibClangPath.eraseComponent();
+ #endif
+
+ LibClangPath.appendComponent("clang");
diff --git a/abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch b/abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch
new file mode 100644
index 0000000..080aa4f
--- /dev/null
+++ b/abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch
@@ -0,0 +1,12 @@
+diff -upr clang-3.1.src.orig/lib/Driver/Tools.cpp clang-3.1.src/lib/Driver/Tools.cpp
+--- clang-3.1.src.orig/lib/Driver/Tools.cpp 2012-04-19 00:32:25.000000000 +0300
++++ clang-3.1.src/lib/Driver/Tools.cpp 2012-05-23 21:12:08.000000000 +0300
+@@ -193,7 +193,7 @@ static void addProfileRT(const ToolChain
+ // libprofile_rt.so. We used to use the -l:libprofile_rt.a syntax, but that is
+ // not supported by old linkers.
+ std::string ProfileRT =
+- std::string(TC.getDriver().Dir) + "/../lib/libprofile_rt.a";
++ std::string(TC.getDriver().Dir) + "/../lib/llvm/libprofile_rt.a";
+
+ CmdArgs.push_back(Args.MakeArgString(ProfileRT));
+ }
diff --git a/abs/extra/llvm/clang-plugin-loader-registry.patch b/abs/extra/llvm/clang-plugin-loader-registry.patch
new file mode 100644
index 0000000..f46eb9f
--- /dev/null
+++ b/abs/extra/llvm/clang-plugin-loader-registry.patch
@@ -0,0 +1,11 @@
+diff -upr llvm-2.7.orig/autoconf/ExportMap.map llvm-2.7/autoconf/ExportMap.map
+--- llvm-2.7.orig/autoconf/ExportMap.map 2010-02-25 00:33:41.000000000 +0200
++++ llvm-2.7/autoconf/ExportMap.map 2010-05-10 14:14:22.000000000 +0300
+@@ -2,6 +2,7 @@
+ global: main;
+ __progname;
+ environ;
++ _ZN4llvm8RegistryIN5clang14FrontendActionENS_14RegistryTraitsIS2_EEE4HeadE;
+
+ local: *;
+ };
diff --git a/abs/extra/llvm/clang-pure64.patch b/abs/extra/llvm/clang-pure64.patch
new file mode 100644
index 0000000..9bbbfaa
--- /dev/null
+++ b/abs/extra/llvm/clang-pure64.patch
@@ -0,0 +1,13 @@
+Index: lib/Driver/Tools.cpp
+===================================================================
+--- lib/Driver/Tools.cpp (revision 123373)
++++ lib/Driver/Tools.cpp (working copy)
+@@ -3306,7 +3306,7 @@
+ else if (ToolChain.getArch() == llvm::Triple::ppc64)
+ CmdArgs.push_back("/lib64/ld64.so.1");
+ else
+- CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2");
++ CmdArgs.push_back("/lib/ld-linux-x86-64.so.2");
+ }
+
+ CmdArgs.push_back("-o");
diff --git a/abs/extra/llvm/clang-toolchains-gcc-versions.patch b/abs/extra/llvm/clang-toolchains-gcc-versions.patch
new file mode 100644
index 0000000..7e00837
--- /dev/null
+++ b/abs/extra/llvm/clang-toolchains-gcc-versions.patch
@@ -0,0 +1,12 @@
+diff -upr clang-2.9.orig/lib/Driver/ToolChains.cpp clang-2.9/lib/Driver/ToolChains.cpp
+--- clang-2.9.orig/lib/Driver/ToolChains.cpp 2011-03-21 23:29:27.000000000 +0200
++++ clang-2.9/lib/Driver/ToolChains.cpp 2011-04-08 00:03:34.000000000 +0300
+@@ -1449,7 +1449,7 @@ Linux::Linux(const HostInfo &Host, const
+ GccTriple = "i586-suse-linux";
+ }
+
+- const char* GccVersions[] = {"4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4",
++ const char* GccVersions[] = {"4.6.1", "4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4",
+ "4.4.3", "4.4", "4.3.4", "4.3.3", "4.3.2",
+ "4.3", "4.2.4", "4.2.3", "4.2.2", "4.2.1",
+ "4.2"};
diff --git a/abs/extra/llvm/enable-lto.patch b/abs/extra/llvm/enable-lto.patch
new file mode 100644
index 0000000..3205fbf
--- /dev/null
+++ b/abs/extra/llvm/enable-lto.patch
@@ -0,0 +1,32 @@
+Index: lib/Driver/ToolChains.cpp
+===================================================================
+--- lib/Driver/ToolChains.cpp (revision 123373)
++++ lib/Driver/ToolChains.cpp (working copy)
+@@ -1398,7 +1398,7 @@
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple() + "/bin").str());
+
+- Linker = GetProgramPath("ld");
++ Linker = GetProgramPath("ld.gold");
+
+ LinuxDistro Distro = DetectLinuxDistro(Arch);
+
+Index: lib/Driver/Tools.cpp
+===================================================================
+--- lib/Driver/Tools.cpp (revision 123373)
++++ lib/Driver/Tools.cpp (working copy)
+@@ -3412,11 +3412,11 @@
+ // Tell the linker to load the plugin. This has to come before AddLinkerInputs
+ // as gold requires -plugin to come before any -plugin-opt that -Wl might
+ // forward.
+- if (D.IsUsingLTO(Args) || Args.hasArg(options::OPT_use_gold_plugin)) {
++ // if (D.IsUsingLTO(Args) || Args.hasArg(options::OPT_use_gold_plugin)) {
+ CmdArgs.push_back("-plugin");
+- std::string Plugin = ToolChain.getDriver().Dir + "/../lib/LLVMgold.so";
++ std::string Plugin = ToolChain.getDriver().Dir + "/../lib/llvm/LLVMgold.so";
+ CmdArgs.push_back(Args.MakeArgString(Plugin));
+- }
++ // }
+
+ AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
+ }
diff --git a/abs/extra/llvm/llvm-3.1-2.src.tar.gz b/abs/extra/llvm/llvm-3.1-2.src.tar.gz
new file mode 120000
index 0000000..4ea98f7
--- /dev/null
+++ b/abs/extra/llvm/llvm-3.1-2.src.tar.gz
@@ -0,0 +1 @@
+/data/pkg_repo/src_packages/llvm-3.1-2.src.tar.gz \ No newline at end of file
diff --git a/abs/extra/llvm/llvm-Config-config.h b/abs/extra/llvm/llvm-Config-config.h
new file mode 100644
index 0000000..c369b45
--- /dev/null
+++ b/abs/extra/llvm/llvm-Config-config.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "config-32.h"
+#elif __WORDSIZE == 64
+#include "config-64.h"
+#else
+#error "Unknown word size"
+#endif
diff --git a/abs/extra/llvm/llvm-Config-llvm-config.h b/abs/extra/llvm/llvm-Config-llvm-config.h
new file mode 100644
index 0000000..2fa08c9
--- /dev/null
+++ b/abs/extra/llvm/llvm-Config-llvm-config.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "llvm-config-32.h"
+#elif __WORDSIZE == 64
+#include "llvm-config-64.h"
+#else
+#error "Unknown word size"
+#endif
diff --git a/abs/extra/lynx/PKGBUILD b/abs/extra/lynx/PKGBUILD
index c268b34..a793fff 100644
--- a/abs/extra/lynx/PKGBUILD
+++ b/abs/extra/lynx/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 90160 2010-09-08 14:58:03Z andrea $
+# $Id: PKGBUILD 162749 2012-06-29 12:15:20Z pierre $
# Maintainer:
# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
@@ -6,10 +6,10 @@
pkgname=lynx
pkgver=2.8.7
_pkgver=2-8-7
-pkgrel=3
+pkgrel=6
pkgdesc="A text browser for the World Wide Web"
url="http://lynx.isc.org/"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
license=('GPL')
depends=('ncurses' 'openssl')
backup=('etc/lynx.cfg')
@@ -22,6 +22,7 @@ build() {
--sysconfdir=/etc \
--with-ssl \
--enable-nls \
+ --enable-ipv6 \
--mandir=/usr/share/man
make
}
diff --git a/abs/extra/m2vrequantiser/PKGBUILD b/abs/extra/m2vrequantiser/PKGBUILD
index 66e264b..38be40c 100644
--- a/abs/extra/m2vrequantiser/PKGBUILD
+++ b/abs/extra/m2vrequantiser/PKGBUILD
@@ -4,7 +4,7 @@ _pkgname=M2VRequantiser
pkgver=1.1
pkgrel=2
pkgdesc="Requantize MPEG-2 streams without recompressing."
-arch=('i686')
+arch=('i686' 'x86_64')
url="http://www.metakine.com/products/dvdremaster/developers.html"
license=('GPLv2')
source=(http://launchpad.net/${pkgname}/trunk/${pkgver}/+download/${_pkgname}-v${pkgver}.tar.gz \
diff --git a/abs/extra/mcpp/PKGBUILD b/abs/extra/mcpp/PKGBUILD
new file mode 100644
index 0000000..6ed62f1
--- /dev/null
+++ b/abs/extra/mcpp/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 159222 2012-05-18 11:58:32Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=mcpp
+pkgver=2.7.2
+pkgrel=4
+pkgdesc="Matsui's CPP implementation precisely conformed to standards"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://mcpp.sourceforge.net"
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ namlen.patch
+ fs28284.patch)
+md5sums=('512de48c87ab023a69250edc7a0c7b05'
+ '0bfc6177a58e912a9e23e368578dd3fe'
+ 'ba668fc6996e538f2e0c096f9eb282ce')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/namlen.patch"
+ patch -Np1 -i "${srcdir}/fs28284.patch"
+ ./configure --prefix=/usr --enable-mcpplib --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ ln -sf ../../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/extra/mcpp/fs28284.patch b/abs/extra/mcpp/fs28284.patch
new file mode 100644
index 0000000..960203c
--- /dev/null
+++ b/abs/extra/mcpp/fs28284.patch
@@ -0,0 +1,100 @@
+diff -c -r -N ../mcpp-2.7.2/src/internal.H ./src/internal.H
+*** ../mcpp-2.7.2/src/internal.H 2008-08-27 10:31:16.000000000 -0230
+--- ./src/internal.H 2009-12-17 21:01:35.000000000 -0330
+***************
+*** 390,395 ****
+--- 390,397 ----
+ extern char identifier[]; /* Lastly scanned name */
+ extern IFINFO ifstack[]; /* Information of #if nesting */
+ extern char work_buf[];
++ extern FILEINFO * sh_file;
++ extern int sh_line;
+ /* Temporary buffer for directive line and macro expansion */
+
+ /* main.c */
+***************
+*** 557,562 ****
+ #endif
+ #endif
+
+! #if HOST_HAVE_STPCPY
+ extern char * stpcpy( char * dest, const char * src);
+ #endif
+--- 559,564 ----
+ #endif
+ #endif
+
+! #if HOST_HAVE_STPCPY && !defined(stpcpy)
+ extern char * stpcpy( char * dest, const char * src);
+ #endif
+diff -c -r -N ../mcpp-2.7.2/src/main.c ./src/main.c
+*** ../mcpp-2.7.2/src/main.c 2008-11-05 05:04:46.000000000 -0330
+--- ./src/main.c 2009-12-17 20:42:42.000000000 -0330
+***************
+*** 326,331 ****
+--- 326,333 ----
+ = FALSE;
+ option_flags.trig = TRIGRAPHS_INIT;
+ option_flags.dig = DIGRAPHS_INIT;
++ sh_file = NULL;
++ sh_line = 0;
+ }
+
+ int mcpp_lib_main
+diff -c -r -N ../mcpp-2.7.2/src/support.c ./src/support.c
+*** ../mcpp-2.7.2/src/support.c 2008-06-10 06:02:33.000000000 -0230
+--- ./src/support.c 2009-12-17 20:42:39.000000000 -0330
+***************
+*** 188,194 ****
+ size_t length
+ )
+ {
+! if (mem_buf_p->bytes_avail < length) { /* Need to allocate more memory */
+ size_t size = MAX( BUF_INCR_SIZE, length);
+
+ if (mem_buf_p->buffer == NULL) { /* 1st append */
+--- 188,194 ----
+ size_t length
+ )
+ {
+! if (mem_buf_p->bytes_avail < length + 1) { /* Need to allocate more memory */
+ size_t size = MAX( BUF_INCR_SIZE, length);
+
+ if (mem_buf_p->buffer == NULL) { /* 1st append */
+***************
+*** 1722,1727 ****
+--- 1722,1729 ----
+ sp -= 2;
+ while (*sp != '\n') /* Until end of line */
+ mcpp_fputc( *sp++, OUT);
++ mcpp_fputc( '\n', OUT);
++ wrong_line = TRUE;
+ }
+ goto end_line;
+ default: /* Not a comment */
+diff -c -r -N ../mcpp-2.7.2/src/system.c ./src/system.c
+*** ../mcpp-2.7.2/src/system.c 2008-11-26 06:23:51.000000000 -0330
+--- ./src/system.c 2009-12-17 20:42:42.000000000 -0330
+***************
+*** 3858,3863 ****
+--- 3858,3866 ----
+ }
+ #endif
+
++ FILEINFO* sh_file;
++ int sh_line;
++
+ void sharp(
+ FILEINFO * sharp_file,
+ int flag /* Flag to append to the line for GCC */
+***************
+*** 3868,3875 ****
+ * else (i.e. 'sharp_file' is NULL) 'infile'.
+ */
+ {
+- static FILEINFO * sh_file;
+- static int sh_line;
+ FILEINFO * file;
+ int line;
+
+--- 3871,3876 ----
diff --git a/abs/extra/mcpp/namlen.patch b/abs/extra/mcpp/namlen.patch
new file mode 100644
index 0000000..6af7418
--- /dev/null
+++ b/abs/extra/mcpp/namlen.patch
@@ -0,0 +1,11 @@
+--- mcpp-2.7.2/src/mbchar.c 2008-03-08 13:06:13.000000000 +0000
++++ mcpp-2.7.2/src/mbchar.c 2009-03-08 13:14:17.000000000 +0000
+@@ -345,7 +345,7 @@
+ static size_t mb_read_utf8( int c1, char ** in_pp, char ** out_pp);
+ /* For UTF8 mbchar encoding */
+
+-#define NAMLEN 20
++#define NAMLEN 40
+ #define UPPER 1 /* To upper */
+ #define LOWER 0 /* To lower */
+
diff --git a/abs/extra/memtest86+/PKGBUILD b/abs/extra/memtest86+/PKGBUILD
new file mode 100644
index 0000000..36e4d68
--- /dev/null
+++ b/abs/extra/memtest86+/PKGBUILD
@@ -0,0 +1,17 @@
+# $Id: PKGBUILD 149463 2012-02-08 05:56:40Z eric $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgname=memtest86+
+pkgver=4.20
+pkgrel=2
+pkgdesc="An advanced memory diagnostic tool"
+arch=('any')
+url="http://www.memtest.org"
+license=('GPL2')
+install=memtest86+.install
+source=(http://www.memtest.org/download/${pkgver}/${pkgname}-${pkgver}.bin.gz)
+sha1sums=('5a91dc1c9e3457456f314e6c99f579210624fafc')
+
+package() {
+ install -D -m644 "${srcdir}/${pkgname}-${pkgver}.bin" "${pkgdir}/boot/memtest86+/memtest.bin"
+}
diff --git a/abs/extra/memtest86+/memtest86+.install b/abs/extra/memtest86+/memtest86+.install
new file mode 100644
index 0000000..40b5f20
--- /dev/null
+++ b/abs/extra/memtest86+/memtest86+.install
@@ -0,0 +1,23 @@
+post_install() {
+cat << EOF
+For using memtest86+, please modify your bootloaders.
+
+If /boot is on root partitions:
+==> GRUB: add this to /boot/grub/menu.lst
+title Memtest86+ [/boot/memtest86+/memtest.bin]
+kernel (hd?,?)/boot/memtest86+/memtest.bin
+
+==> Lilo: add this to lilo.conf
+image = /boot/memtest86+/memtest.bin
+label = "Memtest86+"
+
+If /boot is on a separate partition, then just use /memtest86+/memtest.bin
+without the /boot prefix.
+EOF
+}
+
+post_remove() {
+cat << EOF
+Please remove your additions from your bootloaders.
+EOF
+}
diff --git a/abs/extra/mkvtoolnix/PKGBUILD b/abs/extra/mkvtoolnix/PKGBUILD
index fb275a2..2439562 100644
--- a/abs/extra/mkvtoolnix/PKGBUILD
+++ b/abs/extra/mkvtoolnix/PKGBUILD
@@ -1,32 +1,88 @@
-# $Id: PKGBUILD 41916 2009-06-07 23:34:29Z giovanni $
+# $Id: PKGBUILD 163843 2012-07-21 11:04:01Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
-# Contributor: 03/08/04 <lefungus@altern.org>
+# Contributor: xduugu <xduugu@gmx.com>
-##
-## NOTE!!! Newer versions of mkvtoolnix requires gcc v4.6.0+ !!!
-##
-
-
-pkgname=mkvtoolnix
-pkgver=5.0.1
-pkgrel=1
-pkgdesc="Set of tools to create, edit and inspect Matroska files"
+pkgbase=mkvtoolnix
+pkgname=('mkvtoolnix-cli' 'mkvtoolnix-gtk')
+pkgver=5.7.0
+pkgrel=3
arch=('i686' 'x86_64')
-license=('GPL2')
+license=('GPL')
url="http://www.bunkus.org/videotools/mkvtoolnix/index.html"
-depends=('libmatroska>=1.0.0' 'libebml>=1.0.0' 'flac>=1.1.4' 'libvorbis' 'wxgtk>=2.8.0.1' 'file' 'boost' 'lzo2' 'qt')
-makedepends=('ruby' 'libcroco')
-source=("http://www.bunkus.org/videotools/${pkgname}/sources/${pkgname}-${pkgver}.tar.bz2")
+makedepends=('libmatroska' 'flac' 'libvorbis' 'file' 'wxgtk'
+ 'boost-libs' 'lzo2' 'xdg-utils' 'boost' 'ruby')
+source=("http://www.bunkus.org/videotools/${pkgbase}/sources/${pkgbase}-${pkgver}.tar.bz2"
+ 'mm_io.patch')
+md5sums=('99ea44be570412dadafe4ccaee0cfe6e'
+ '293bd4551ef8529e9d4796c5a201b8fc')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}/
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/mm_io.patch"
+
+ # Disable automagic curl dep used for online update checking
+ sed -i -e '/curl/d' configure.in
+ export CURL_CFLAGS="" CURL_LIBS=""
+
+ export CFLAGS="${CFLAGS} -DBOOST_FILESYSTEM_VERSION=3"
+ export CXXFLAGS="${CXXFLAGS} -DBOOST_FILESYSTEM_VERSION=3"
+
+ autoreconf
+
./configure --prefix=/usr \
--with-boost-libdir=/usr/lib \
- --enable-qt
- ./drake || return 1
+ --disable-gui
+ rake
+
+ mv src/mkvinfo{,-cli}
+
+ ./configure --prefix=/usr \
+ --with-boost-libdir=/usr/lib
+ rake
}
-package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- ./drake DESTDIR=${pkgdir} install
+
+package_mkvtoolnix-cli() {
+ pkgdesc="Set of tools to create, edit and inspect Matroska files - CLI version"
+ depends=('libmatroska' 'expat' 'flac' 'libvorbis' 'file' 'boost-libs' 'lzo2')
+ provides=('mkvtoolnix')
+ conflicts=('mkvtoolnix')
+ replaces=('mkvtoolnix')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ rake DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}"/usr/bin/mkvinfo
+ install -Dm755 src/mkvinfo-cli "${pkgdir}"/usr/bin/mkvinfo
+
+ rm -rf "${pkgdir}"/usr/bin/mmg
+ rm -rf "${pkgdir}"/usr/share/man/ja/man1/mmg.1
+ rm -rf "${pkgdir}"/usr/share/man/man1/mmg.1
+ rm -rf "${pkgdir}"/usr/share/man/nl/man1/mmg.1
+ rm -rf "${pkgdir}"/usr/share/man/zh_CN/man1/mmg.1
+ rm -rf "${pkgdir}"/usr/share/man/uk/man1/mmg.1
+ rm -rf "${pkgdir}"/usr/share/applications
+ rm -rf "${pkgdir}"/usr/share/icons
+ rm -rf "${pkgdir}"/usr/share/mime
+}
+
+package_mkvtoolnix-gtk() {
+ pkgdesc="Set of tools to create, edit and inspect Matroska files - wxGTK GUI"
+ depends=("mkvtoolnix-cli=${pkgver}" 'wxgtk' 'xdg-utils')
+ install=mkvtoolnix.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ rake DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}"/usr/bin/mkv*
+ install -Dm755 src/mkvinfo "${pkgdir}"/usr/bin/mkvinfo-gtk
+ sed -ri 's/^(Exec=mkvinfo)/\1-gtk/' "${pkgdir}"/usr/share/applications/mkvinfo.desktop
+
+ rm -rf "${pkgdir}"/usr/share/doc
+ rm -rf "${pkgdir}"/usr/share/locale
+ rm -rf "${pkgdir}"/usr/share/man/ja/man1/mkv*
+ rm -rf "${pkgdir}"/usr/share/man/man1/mkv*
+ rm -rf "${pkgdir}"/usr/share/man/nl/man1/mkv*
+ rm -rf "${pkgdir}"/usr/share/man/zh_CN/man1/mkv*
+ rm -rf "${pkgdir}"/usr/share/man/uk/man1/mkv*
}
-md5sums=('2cd84ff24e1d9217dd3caf170f34e758')
diff --git a/abs/extra/mkvtoolnix/mkvtoolnix.install b/abs/extra/mkvtoolnix/mkvtoolnix.install
new file mode 100644
index 0000000..74d9eb2
--- /dev/null
+++ b/abs/extra/mkvtoolnix/mkvtoolnix.install
@@ -0,0 +1,14 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ if [ -f usr/bin/update-mime-database ]; then
+ update-mime-database usr/share/mime &> /dev/null
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ post_install
+}
diff --git a/abs/extra/mkvtoolnix/mm_io.patch b/abs/extra/mkvtoolnix/mm_io.patch
new file mode 100644
index 0000000..9ee9e01
--- /dev/null
+++ b/abs/extra/mkvtoolnix/mm_io.patch
@@ -0,0 +1,11 @@
+--- a/src/common/mm_io.cpp 2012-07-08 20:06:02.000000000 +0200
++++ b/src/common/mm_io.cpp 2012-07-21 11:59:59.000000000 +0200
+@@ -147,7 +147,7 @@
+ void
+ mm_file_io_c::prepare_path(const std::string &path) {
+ boost::filesystem::path directory = boost::filesystem::path(path).parent_path();
+- if (boost::filesystem::exists(directory))
++ if (directory.empty() || boost::filesystem::exists(directory))
+ return;
+
+ boost::system::error_code error_code;
diff --git a/abs/extra/mono/PKGBUILD b/abs/extra/mono/PKGBUILD
index bd9bf3b..9a83fc9 100644
--- a/abs/extra/mono/PKGBUILD
+++ b/abs/extra/mono/PKGBUILD
@@ -1,22 +1,22 @@
-# $Id: PKGBUILD 95334 2010-10-18 17:54:25Z daniel $
+# $Id: PKGBUILD 145729 2011-12-29 13:13:45Z daniel $
# Maintainer: Daniel Isenmann <daniel@archlinux.org>
# Contributor: Brice Carpentier <brice@dlfp.org>
pkgname=mono
-pkgver=2.8
+pkgver=2.10.8
pkgrel=1
pkgdesc="Free implementation of the .NET platform including runtime and compiler"
arch=(i686 x86_64)
license=('GPL' 'LGPL2' 'MPL' 'custom:MITX11')
url="http://www.mono-project.com/"
-depends=('zlib' 'libgdiplus>=2.8' 'sh')
+depends=('zlib' 'libgdiplus>=2.10' 'sh')
makedepends=('pkgconfig')
options=('!libtool' '!makeflags')
provides=('monodoc')
conflicts=('monodoc')
-source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+source=(http://download.mono-project.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.gz
mono.rc.d)
-md5sums=('30b1180e20e5110d3fb36147137014a0'
+md5sums=('411a2d9bcfc37a61eb9aedba88b40533'
'8315e46c6a6e9625502521fc0ad1a322')
build() {
@@ -25,12 +25,21 @@ build() {
./configure --prefix=/usr --sysconfdir=/etc \
--with-libgdiplus=installed
make || return 1
+
+ # build jay
+ cd ${srcdir}/${pkgname}-${pkgver}/mcs/jay
+ make || return 1
}
package() {
cd ${srcdir}/${pkgname}-${pkgver}
make DESTDIR=${pkgdir} install || return 1
+ # install jay
+ cd ${srcdir}/${pkgname}-${pkgver}/mcs/jay
+ make DESTDIR=${pkgdir} prefix=/usr INSTALL=../../install-sh install
+ cd ${srcdir}/${pkgname}-${pkgver}
+
# install daemons and pathes
mkdir -p ${pkgdir}/etc/rc.d
install -m755 ${srcdir}/mono.rc.d ${pkgdir}/etc/rc.d/mono
diff --git a/abs/extra/mono/__changelog b/abs/extra/mono/__changelog
deleted file mode 100644
index 8ed76c2..0000000
--- a/abs/extra/mono/__changelog
+++ /dev/null
@@ -1,2 +0,0 @@
-add bison as a make depends
-update to 2.8
diff --git a/abs/extra/mpg123/PKGBUILD b/abs/extra/mpg123/PKGBUILD
index 5b1b335..8b2633f 100644
--- a/abs/extra/mpg123/PKGBUILD
+++ b/abs/extra/mpg123/PKGBUILD
@@ -1,28 +1,27 @@
-# $Id: PKGBUILD 85300 2010-07-11 18:52:51Z eric $
-# Maintainer: Hugo Doria <hugo@archlinux.org>
-# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# $Id: PKGBUILD 163205 2012-07-09 20:33:57Z eric $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
pkgname=mpg123
-pkgver=1.12.3
+pkgver=1.14.3
pkgrel=1
pkgdesc="A console based real time MPEG Audio Player for Layer 1, 2 and 3"
arch=('i686' 'x86_64')
url="http://sourceforge.net/projects/mpg123"
license=('GPL2' 'LGPL2.1')
-depends=('glibc' 'libtool' 'alsa-lib')
-makedepends=('esound' 'sdl')
-optdepends=('esound: for additional audio support' 'sdl: for additional audio support')
+depends=('libltdl' 'alsa-lib')
+makedepends=('sdl')
+optdepends=('sdl: for sdl audio support')
conflicts=('mpg321')
provides=('mpg321')
-replaces=('mpg321')
-options=('libtool')
-source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('c1568be2d1715786bd6b1a89ec6fa7ef')
-sha1sums=('5e92d3c918f6095264089f711a9f38a5d2168b31')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2{,.sig})
+sha1sums=('c3cd800121bccf15d8fc31a30575a5dce8aaa5d5'
+ '32f4a507aed62c038b1620c938c8001b3a9b04b5')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr --with-audio="alsa esd sdl"
+ ./configure --prefix=/usr --enable-int-quality --with-module-suffix=.so \
+ --with-audio="alsa oss sdl "
make
}
@@ -30,4 +29,3 @@ package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
}
-
diff --git a/abs/extra/mpg123/__changelog b/abs/extra/mpg123/__changelog
new file mode 100644
index 0000000..6ca760c
--- /dev/null
+++ b/abs/extra/mpg123/__changelog
@@ -0,0 +1 @@
+remove pulse jack
diff --git a/abs/extra/nbd/PKGBUILD b/abs/extra/nbd/PKGBUILD
new file mode 100644
index 0000000..e02e890
--- /dev/null
+++ b/abs/extra/nbd/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 73924 2012-07-17 05:54:37Z svenstaro $
+# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
+# Contributor: Christian Hesse <mail@eworm.de>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gerhard Brauer <gerbra@archlinux.de>
+
+pkgname=nbd
+pkgver=3.2
+pkgrel=2
+pkgdesc="tools for network block devices, allowing you to use remote block devices over TCP/IP"
+arch=('i686' 'x86_64')
+url="http://nbd.sourceforge.net"
+license=('GPL')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
+ config nbd nbd.service)
+backup=('etc/nbd-server/config')
+depends=('glib2')
+install=nbd.install
+md5sums=('9cafce4ecfb55e670d7ded4c8f4e6bc9'
+ '2d05d426b8c2708d5f8a0d028fcbae05'
+ 'e7b13a8b3369e11927d9917664557efa'
+ '5d1acc143018117174f79eff15afa038')
+
+build(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 "${srcdir}"/config "${pkgdir}"/etc/nbd-server/config
+ install -D -m755 "${srcdir}"/nbd "${pkgdir}"/etc/rc.d/nbd
+ install -D -m644 "${srcdir}"/nbd.service "${pkgdir}"/usr/lib/systemd/system/nbd.service
+
+ install -D -m644 README "${pkgdir}"/usr/share/doc/nbd/README
+}
diff --git a/abs/extra/nbd/config b/abs/extra/nbd/config
new file mode 100644
index 0000000..777f0ef
--- /dev/null
+++ b/abs/extra/nbd/config
@@ -0,0 +1,33 @@
+[generic]
+ # The [generic] section is required, even if nothing is specified
+ # there.
+ # When either of these options are specified, nbd-server drops
+ # privileges to the given user and group after opening ports, but
+ # _before_ opening files.
+ user = nbd
+ group = nbd
+ # Since version 2.9.17, nbd-server will do exports on a name
+ # basis (the used name is the name of the section in which the
+ # export is specified). This however required an incompatible
+ # protocol change. To enable backwards-compatible port-based
+ # exports, uncomment the following line:
+ # oldstyle = true
+[export1]
+ exportname = /export/nbd/export1-file
+ # The following line will be ignored unless the
+ # "oldstyle = true" line in the generic section above is
+ # enabled.
+ #port = 12345
+ authfile = /export/nbd/export1-authfile
+ timeout = 30
+ filesize = 10000000
+ readonly = false
+ multifile = false
+ copyonwrite = false
+ prerun = dd if=/dev/zero of=%s bs=1k count=500
+ postrun = rm -f %s
+[otherexport]
+ exportname = /export/nbd/experiment
+ # The other options are all optional, except this one in case
+ # the oldstyle option is used in [generic]:
+ # port = 12346
diff --git a/abs/extra/nbd/nbd b/abs/extra/nbd/nbd
new file mode 100644
index 0000000..76d16c7
--- /dev/null
+++ b/abs/extra/nbd/nbd
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PIDFILE="/var/run/nbd-server.pid"
+PID=`cat $PIDFILE 2>/dev/null`
+case "$1" in
+ start)
+ stat_busy "Starting Network Block Device Server"
+ if [ "$PID" = "" ]; then
+ /usr/bin/nbd-server
+ fi
+ if [ "$PID" != "" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon nbd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Network Block Device Server"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ rm -f $PIDFILE
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon nbd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/abs/extra/nbd/nbd.install b/abs/extra/nbd/nbd.install
new file mode 100644
index 0000000..9e7a01e
--- /dev/null
+++ b/abs/extra/nbd/nbd.install
@@ -0,0 +1,13 @@
+post_install() {
+ getent group "nbd" &>/dev/null || groupadd -r -g 44 nbd 1>/dev/null
+ getent passwd "nbd" &>/dev/null || useradd -r -u 44 -g nbd -d "/var/empty" -s "/bin/false" nbd 1>/dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ getent passwd "nbd" &>/dev/null && userdel nbd 1>/dev/null
+ getent group "nbd" &>/dev/null && groupdel nbd 1>/dev/null
+}
diff --git a/abs/extra/nbd/nbd.service b/abs/extra/nbd/nbd.service
new file mode 100644
index 0000000..3d58051
--- /dev/null
+++ b/abs/extra/nbd/nbd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Network Block Device Server
+After=network.target
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/nbd-server
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/extra/neon/PKGBUILD b/abs/extra/neon/PKGBUILD
index 64e21c5..9ab0fd8 100644
--- a/abs/extra/neon/PKGBUILD
+++ b/abs/extra/neon/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 129362 2011-06-27 05:41:06Z andrea $
+# $Id: PKGBUILD 153967 2012-03-21 06:21:04Z pierre $
# Maintainer:
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
# Contributor: Juergen Hoetzel <juergen@archlinux.org>
pkgname=neon
pkgver=0.29.6
-pkgrel=2
+pkgrel=4
pkgdesc="HTTP and WebDAV client library with a C interface"
arch=('i686' 'x86_64')
license=('GPL' 'LGPL')
-depends=('heimdal' 'expat' 'ca-certificates')
+depends=('krb5' 'expat' 'ca-certificates')
url="http://www.webdav.org/neon/"
source=("http://www.webdav.org/${pkgname}/${pkgname}-${pkgver}.tar.gz")
md5sums=('591e0c82e6979e7e615211b386b8f6bc')
diff --git a/abs/extra/netpbm/PKGBUILD b/abs/extra/netpbm/PKGBUILD
index 14ddc32..b447bee 100644
--- a/abs/extra/netpbm/PKGBUILD
+++ b/abs/extra/netpbm/PKGBUILD
@@ -1,37 +1,36 @@
-# $Id: PKGBUILD 88007 2010-08-19 02:32:47Z eric $
+# $Id: PKGBUILD 148858 2012-02-05 11:53:06Z ibiru $
# Maintainer: Kevin Piche <kevin@archlinux.org>
-# Contributor: Jochem Kossen <j.kossen@home.nl>
pkgname=netpbm
-pkgver=10.47.18
+pkgver=10.57.1
pkgrel=1
pkgdesc="A toolkit for manipulation of graphic images"
arch=('i686' 'x86_64')
license=('custom' 'BSD' 'GPL' 'LGPL')
url="http://netpbm.sourceforge.net/"
-depends=('perl' 'libjpeg' 'libpng' 'libtiff' 'libxml2')
+depends=('perl' 'libpng' 'libtiff' 'libxml2')
makedepends=('python2')
options=('!makeflags')
# Releases after 10.34 are available via SVN only.
-# Get stable tarball here: http://netpbm.sourceforge.net/release.html#tarball
-# get doc with: wget --recursive --relative -nH http://netpbm.sourceforge.net/doc/
+# Get Advanced tarball here: http://netpbm.sourceforge.net/release.html#tarball
+# Get version number from version.mk
+# Get docs with: wget --recursive --relative -nH http://netpbm.sourceforge.net/doc/
source=(ftp://ftp.archlinux.org/other/netpbm/${pkgname}-${pkgver}.tar.gz \
ftp://ftp.archlinux.org/other/netpbm/netpbm-doc-22Feb2009.tar.xz \
- libpng-1.4.patch netpbm-CAN-2005-2471.patch \
- netpbm-security-code.patch netpbm-security-scripts.patch)
-md5sums=('c3b66d329f818b6b4f02f7367ce1a6f8' '48efce0093c5f242bce3072958fe88c3'\
- '6a8319e77f2d41881ee11c86b78c51d0' '07ee863e6f951250e8d0a08243c828c7'\
- 'fac4c9bedff9d90ac5a66e93d8c2eb33' 'cbb689129c82d16360d7f840b86789c7')
-sha1sums=('d670574754f161e37534c16f86ebda08a4266774' 'dfeba9f9a5fe987d64db0aadb5ca8c1b20fcead2'\
- 'ab2e67374871b8b6c0c8b69a24e3502e68487759' '456b76004622479f6ee81107c54b5211a1663a6a'\
- '5af979e8fb7d3bbb7e731eed62326bb594bc91b3' '2ac31f714121e08e47af9337c6bbaab3cbfc5c75')
+ netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch)
+sha1sums=('cd0b99333faf994a680d77c5d217034df35ebd4e'
+ 'dfeba9f9a5fe987d64db0aadb5ca8c1b20fcead2'
+ 'b79cf9d42488fea065ba16262ed97694c47af08d'
+ '4cd5b94a24886ecae3973c5ae104d8298fe5a1f5'
+ '2ac31f714121e08e47af9337c6bbaab3cbfc5c75')
build() {
- cd "${srcdir}/stable"
- patch -p1 < ../libpng-1.4.patch
+ cd "${srcdir}/advanced"
patch -p1 < ../netpbm-CAN-2005-2471.patch
patch -p1 < ../netpbm-security-code.patch
patch -p1 < ../netpbm-security-scripts.patch
+ sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' buildtools/makeman
+ sed -i 's|@python|@python2|' buildtools/manpage.mk
cp config.mk.in config.mk
[ "${CARCH}" = 'x86_64' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk
@@ -41,42 +40,33 @@ build() {
echo 'PNGLIB = libpng.so' >> config.mk
echo 'ZLIB = libz.so' >> config.mk
- sed -i 's|PKGMANDIR = man|PKGMANDIR = share/man|' common.mk
sed -i 's|misc|share/netpbm|' common.mk
sed -i 's|/link|/lib|' lib/Makefile
sed -i 's|install.manweb install.man|install.man|' GNUmakefile
- sed -i '/MANUALS1 = $(BINARIES) $(SCRIPTS)/a\
- MANUALS1 += bmptoppm faxformat gemtopbm jpegtopnm mrf netpbm pamtotiff pamx pgmedge \\\
- pgmnorm pgmoil pgmslice pnmarith pnmcut pnmdepth pnmenlarge pnmfile \\\
- pnminterp pnmnoraw pnmscale pnmsplit pnmtofits pnmtojpeg pnmtopnm pnmtops \\\
- pnmtotiff pnmtotiffcmyk ppmnorm ppmsvgalib ppmtojpeg ppmtotga ppmtouil \\\
- tifftopnm vidtoppm \
- MANUALS3 += libnetpbm_image libnetpbm_ug libpbm libpgm libpm libpnm libppm libsystem libtmpfile \
- MANUALS5 += extendedopacity pfm' common.mk
make
# Generating useful man pages with html doc
cd "${srcdir}/doc"
- make MAKEMAN="${srcdir}/stable/buildtools/makeman" USERGUIDE=. \
- -f "${srcdir}/stable/buildtools/manpage.mk" manpages
+ make MAKEMAN="${srcdir}/advanced/buildtools/makeman" USERGUIDE=. \
+ -f "${srcdir}/advanced/buildtools/manpage.mk" manpages
}
package() {
- cd "${srcdir}/stable"
- make pkgdir="${pkgdir}/usr" install-run install-dev
+ cd "${srcdir}/advanced"
+ make pkgdir="${pkgdir}/usr" PKGMANDIR=share/man install-run install-dev
# Removing dummy man pages
rm "${pkgdir}"/usr/share/man/man{1,3,5}/*
cd "${srcdir}/doc"
- make MAKEMAN="${srcdir}/stable/buildtools/makeman" MANDIR="${pkgdir}/usr/share/man" \
- -f "${srcdir}/stable/buildtools/manpage.mk" installman
+ make MAKEMAN="${srcdir}/advanced/buildtools/makeman" MANDIR="${pkgdir}/usr/share/man" \
+ -f "${srcdir}/advanced/buildtools/manpage.mk" installman
# Replace obsolete utility
echo -e '#!/bin/sh\npamditherbw $@ | pamtopnm\n' > "${pkgdir}/usr/bin/pgmtopbm"
# Licensing. Note that each program in the package has a separate license.
- install -D -m644 "${srcdir}/stable/doc/copyright_summary" \
+ install -D -m644 "${srcdir}/advanced/doc/copyright_summary" \
"${pkgdir}/usr/share/licenses/${pkgname}/copyright_summary.txt"
}
diff --git a/abs/extra/netpbm/__changelog b/abs/extra/netpbm/__changelog
deleted file mode 100644
index 6cbbaea..0000000
--- a/abs/extra/netpbm/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-makedepends changed to python2
diff --git a/abs/extra/netpbm/libpng-1.4.patch b/abs/extra/netpbm/libpng-1.4.patch
deleted file mode 100644
index c02ded7..0000000
--- a/abs/extra/netpbm/libpng-1.4.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-diff -Naur netpbm-orig/converter/other/pnmtopng.c netpbm/converter/other/pnmtopng.c
---- netpbm-orig/converter/other/pnmtopng.c 2010-01-22 00:13:48.000000000 -0500
-+++ netpbm/converter/other/pnmtopng.c 2010-01-22 00:21:33.000000000 -0500
-@@ -2641,7 +2641,7 @@
- info_ptr->color_type == PNG_COLOR_TYPE_RGB) {
- if (transparent > 0) {
- info_ptr->valid |= PNG_INFO_tRNS;
-- info_ptr->trans_values =
-+ info_ptr->trans_color =
- xelToPngColor_16(transcolor, maxval, png_maxval);
- }
- } else {
-@@ -2653,10 +2653,10 @@
- if (info_ptr->valid && PNG_INFO_tRNS)
- pm_message("Transparent color {gray, red, green, blue} = "
- "{%d, %d, %d, %d}",
-- info_ptr->trans_values.gray,
-- info_ptr->trans_values.red,
-- info_ptr->trans_values.green,
-- info_ptr->trans_values.blue);
-+ info_ptr->trans_color.gray,
-+ info_ptr->trans_color.red,
-+ info_ptr->trans_color.green,
-+ info_ptr->trans_color.blue);
- else
- pm_message("No transparent color");
- }
-diff -Naur netpbm-orig/converter/other/pngtopnm.c netpbm/converter/other/pngtopnm.c
---- netpbm-orig/converter/other/pngtopnm.c 2010-01-22 00:33:25.000000000 -0500
-+++ netpbm/converter/other/pngtopnm.c 2010-01-22 00:39:21.000000000 -0500
-@@ -569,8 +569,8 @@
- for (i = 0, foundGray = FALSE;
- i < info_ptr->num_trans && !foundGray;
- ++i) {
-- if (info_ptr->trans[i] != 0 &&
-- info_ptr->trans[i] != maxval) {
-+ if (info_ptr->trans_alpha[i] != 0 &&
-+ info_ptr->trans_alpha[i] != maxval) {
- foundGray = TRUE;
- }
- }
-@@ -641,7 +641,7 @@
- unsigned int i;
- trans_mix = TRUE;
- for (i = 0; i < info_ptr->num_trans; ++i)
-- if (info_ptr->trans[i] != 0 && info_ptr->trans[i] != 255) {
-+ if (info_ptr->trans_alpha[i] != 0 && info_ptr->trans_alpha[i] != 255) {
- trans_mix = FALSE;
- break;
- }
-@@ -1061,7 +1061,7 @@
- setXel(&xelrow[col], fgColor, bgColor, alphaHandling,
- (pngxP->info_ptr->valid & PNG_INFO_tRNS) &&
- index < pngxP->info_ptr->num_trans ?
-- pngxP->info_ptr->trans[index] : maxval);
-+ pngxP->info_ptr->trans_alpha[index] : maxval);
- }
- break;
-
diff --git a/abs/extra/netpbm/netpbm-CAN-2005-2471.patch b/abs/extra/netpbm/netpbm-CAN-2005-2471.patch
index 8cbbd6d..3759d7e 100644
--- a/abs/extra/netpbm/netpbm-CAN-2005-2471.patch
+++ b/abs/extra/netpbm/netpbm-CAN-2005-2471.patch
@@ -1,9 +1,9 @@
--- netpbm-10.29/converter/other/pstopnm.c.CAN-2005-2471 2005-08-15 02:39:46.000000000 +0200
+++ netpbm-10.29/converter/other/pstopnm.c 2005-08-16 15:38:15.000000000 +0200
@@ -711,11 +711,11 @@
- "'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
ghostscriptProg, arg0,
- deviceopt, outfileopt, gopt, ropt, "-q", "-dNOPAUSE",
+ deviceopt, outfileopt, gopt, ropt, textalphabitsopt,
+ "-q", "-dNOPAUSE",
- "-dSAFER", "-");
+ "-dPARANOIDSAFER", "-");
}
diff --git a/abs/extra/netpbm/netpbm-security-code.patch b/abs/extra/netpbm/netpbm-security-code.patch
index e8fbc29..da67a8f 100644
--- a/abs/extra/netpbm/netpbm-security-code.patch
+++ b/abs/extra/netpbm/netpbm-security-code.patch
@@ -22,15 +22,15 @@ diff -up netpbm-10.47.04/analyzer/pgmtexture.c.security netpbm-10.47.04/analyzer
if (m == NULL)
pm_error("Unable to allocate memory for a matrix.");
@@ -102,6 +108,9 @@ matrix (int nrl, int nrh, int ncl, int n
- m -= ncl;
+ assert (nch >= ncl);
/* allocate rows and set pointers to them */
+ if(nch < ncl)
+ pm_error("assert: h < l");
+ overflow_add(nch - ncl, 1);
- for (i = nrl; i <= nrh; i++)
- {
+ for (i = nrl; i <= nrh; ++i) {
MALLOCARRAY(m[i], (unsigned) (nch - ncl + 1));
+ if (m[i] == NULL)
diff -up netpbm-10.47.04/converter/other/gemtopnm.c.security netpbm-10.47.04/converter/other/gemtopnm.c
--- netpbm-10.47.04/converter/other/gemtopnm.c.security 2009-10-21 13:39:06.000000000 +0200
+++ netpbm-10.47.04/converter/other/gemtopnm.c 2009-10-21 15:09:33.000000000 +0200
@@ -118,46 +118,6 @@ diff -up netpbm-10.47.04/converter/other/pnmtojpeg.c.security netpbm-10.47.04/co
buffer = (*cinfo_p->mem->alloc_sarray)
((j_common_ptr) cinfo_p, JPOOL_IMAGE,
(unsigned int) cinfo_p->image_width * cinfo_p->input_components,
-diff -up netpbm-10.47.04/converter/other/pnmtops.c.security netpbm-10.47.04/converter/other/pnmtops.c
---- netpbm-10.47.04/converter/other/pnmtops.c.security 2009-10-21 13:39:06.000000000 +0200
-+++ netpbm-10.47.04/converter/other/pnmtops.c 2009-10-21 15:09:33.000000000 +0200
-@@ -186,16 +186,20 @@ parseCommandLine(int argc, char ** argv,
- cmdlineP->canturn = !noturn;
- cmdlineP->showpage = !noshowpage;
-
-+ overflow2(width, 72);
- cmdlineP->width = width * 72;
-+ overflow2(height, 72);
- cmdlineP->height = height * 72;
-
-- if (imagewidthSpec)
-+ if (imagewidthSpec) {
-+ overflow2(imagewidth, 72);
- cmdlineP->imagewidth = imagewidth * 72;
-- else
-+ } else
- cmdlineP->imagewidth = 0;
-- if (imageheightSpec)
-+ if (imageheightSpec) {
-+ overflow2(imageheight, 72);
- cmdlineP->imageheight = imageheight * 72;
-- else
-+ } else
- cmdlineP->imageheight = 0;
-
- if (!cmdlineP->psfilter &&
-diff -up netpbm-10.47.04/converter/other/pnmtorle.c.security netpbm-10.47.04/converter/other/pnmtorle.c
---- netpbm-10.47.04/converter/other/pnmtorle.c.security 2009-10-21 13:39:06.000000000 +0200
-+++ netpbm-10.47.04/converter/other/pnmtorle.c 2009-10-21 15:09:33.000000000 +0200
-@@ -19,6 +19,8 @@
- * If you modify this software, you should include a notice giving the
- * name of the person performing the modification, the date of modification,
- * and the reason for such modification.
-+ *
-+ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
- */
- /*
- * pnmtorle - A program which will convert pbmplus (ppm or pgm) images
diff -up netpbm-10.47.04/converter/other/pnmtosgi.c.security netpbm-10.47.04/converter/other/pnmtosgi.c
--- netpbm-10.47.04/converter/other/pnmtosgi.c.security 2009-10-21 13:39:06.000000000 +0200
+++ netpbm-10.47.04/converter/other/pnmtosgi.c 2009-10-21 15:09:33.000000000 +0200
@@ -216,25 +176,22 @@ diff -up netpbm-10.47.04/converter/other/rletopnm.c.security netpbm-10.47.04/con
diff -up netpbm-10.47.04/converter/other/sgitopnm.c.security netpbm-10.47.04/converter/other/sgitopnm.c
--- netpbm-10.47.04/converter/other/sgitopnm.c.security 2009-10-21 13:39:06.000000000 +0200
+++ netpbm-10.47.04/converter/other/sgitopnm.c 2009-10-21 15:09:33.000000000 +0200
-@@ -252,13 +252,17 @@ read_channels(ifp, head, table, func, oc
-
- if (ochan < 0) {
- maxchannel = (head->zsize < 3) ? head->zsize : 3;
+@@ -252,10 +252,14 @@ read_channels(ifp, head, table, func, oc
+ MALLOCARRAY_NOFAIL(image, head->ysize);
+ } else {
+ maxchannel = MIN(3, head->zsize);
+ overflow2(head->ysize, maxchannel);
MALLOCARRAY_NOFAIL(image, head->ysize * maxchannel);
- } else {
- maxchannel = ochan + 1;
- MALLOCARRAY_NOFAIL(image, head->ysize);
}
-- if ( table )
-+ if ( table ) {
+- if (table)
++ if (table) {
+ overflow2(head->xsize, 2);
+ overflow_add(head->xsize*2, 2);
MALLOCARRAY_NOFAIL(temp, WORSTCOMPR(head->xsize));
+ }
- for( channel = 0; channel < maxchannel; channel++ ) {
- #ifdef DEBUG
+ for(channel = 0; channel < maxchannel; ++channel) {
+ unsigned int row;
diff -up netpbm-10.47.04/converter/other/sirtopnm.c.security netpbm-10.47.04/converter/other/sirtopnm.c
--- netpbm-10.47.04/converter/other/sirtopnm.c.security 2009-10-21 13:39:06.000000000 +0200
+++ netpbm-10.47.04/converter/other/sirtopnm.c 2009-10-21 15:09:33.000000000 +0200
@@ -282,9 +239,9 @@ diff -up netpbm-10.47.04/converter/other/xwdtopnm.c.security netpbm-10.47.04/con
*padrightP =
h11FixedP->bytes_per_line * 8 -
h11FixedP->pixmap_width * h11FixedP->bits_per_pixel;
-diff -up netpbm-10.47.04/converter/pbm/icontopbm.c.security netpbm-10.47.04/converter/pbm/icontopbm.c
---- netpbm-10.47.04/converter/pbm/icontopbm.c.security 2009-10-21 13:39:10.000000000 +0200
-+++ netpbm-10.47.04/converter/pbm/icontopbm.c 2009-10-21 15:09:33.000000000 +0200
+diff -up netpbm-10.47.04/converter/other/sunicontopnm.c.security netpbm-10.47.04/converter/other/sunicontopnm.c
+--- netpbm-10.47.04/converter/other/sunicontopnm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/other/sunicontopnm.c 2009-10-21 15:09:33.000000000 +0200
@@ -11,6 +11,7 @@
*/
@@ -294,17 +251,17 @@ diff -up netpbm-10.47.04/converter/pbm/icontopbm.c.security netpbm-10.47.04/conv
#include "nstring.h"
#include "pbm.h"
@@ -87,6 +88,11 @@ ReadIconFile(FILE * const
- if ( *heightP <= 0 )
- pm_error( "invalid height (must be positive): %d", *heightP );
+ if (*heightP <= 0)
+ pm_error("invalid height (must be positive): %d", *heightP);
+ if ( *widthP > INT_MAX - 16 || *widthP < 0)
+ pm_error( "invalid width: %d", *widthP);
+
+ overflow2(*widthP + 16, *heightP);
+
- data_length = BitmapSize( *widthP, *heightP );
- *dataP = (short unsigned int *) malloc( data_length );
- if ( *dataP == NULL )
+ }
+
+
diff -up netpbm-10.47.04/converter/pbm/mdatopbm.c.security netpbm-10.47.04/converter/pbm/mdatopbm.c
--- netpbm-10.47.04/converter/pbm/mdatopbm.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/pbm/mdatopbm.c 2009-10-21 15:09:33.000000000 +0200
@@ -367,22 +324,6 @@ diff -up netpbm-10.47.04/converter/pbm/pbmto4425.c.security netpbm-10.47.04/conv
if(vmap == NULL)
{
pm_error( "Cannot allocate memory" );
-diff -up netpbm-10.47.04/converter/pbm/pbmtoascii.c.security netpbm-10.47.04/converter/pbm/pbmtoascii.c
---- netpbm-10.47.04/converter/pbm/pbmtoascii.c.security 2009-10-21 13:39:10.000000000 +0200
-+++ netpbm-10.47.04/converter/pbm/pbmtoascii.c 2009-10-21 15:09:33.000000000 +0200
-@@ -115,9 +115,11 @@ char* argv[];
- pm_usage( usage );
-
- pbm_readpbminit( ifp, &cols, &rows, &format );
-+ overflow_add(cols, gridx);
- ccols = ( cols + gridx - 1 ) / gridx;
- bitrow = pbm_allocrow( cols );
- sig = (int*) pm_allocrow( ccols, sizeof(int) );
-+ overflow_add(ccols, 1);
- line = (char*) pm_allocrow( ccols + 1, sizeof(char) );
-
- for ( row = 0; row < rows; row += gridy )
-diff -up netpbm-10.47.04/converter/pbm/pbmtocmuwm.c.security netpbm-10.47.04/converter/pbm/pbmtocmuwm.c
diff -up netpbm-10.47.04/converter/pbm/pbmtogem.c.security netpbm-10.47.04/converter/pbm/pbmtogem.c
--- netpbm-10.47.04/converter/pbm/pbmtogem.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/pbm/pbmtogem.c 2009-10-21 15:09:33.000000000 +0200
@@ -405,17 +346,6 @@ diff -up netpbm-10.47.04/converter/pbm/pbmtogo.c.security netpbm-10.47.04/conver
rucols = ( cols + 7 ) / 8;
bytesperrow = rucols; /* GraphOn uses bytes */
rucols = rucols * 8;
-diff -up netpbm-10.47.04/converter/pbm/pbmtoicon.c.security netpbm-10.47.04/converter/pbm/pbmtoicon.c
---- netpbm-10.47.04/converter/pbm/pbmtoicon.c.security 2009-10-21 13:39:10.000000000 +0200
-+++ netpbm-10.47.04/converter/pbm/pbmtoicon.c 2009-10-21 15:38:55.000000000 +0200
-@@ -114,6 +114,7 @@ writeIcon(FILE * const ifP,
- unsigned char * bitrow;
- unsigned int row;
-
-+ overflow_add(cols, 15);
- bitbuffer = pbm_allocrow_packed(cols + wordintSize);
- bitrow = &bitbuffer[1];
- bitbuffer[0] = 0;
diff -up netpbm-10.47.04/converter/pbm/pbmtolj.c.security netpbm-10.47.04/converter/pbm/pbmtolj.c
--- netpbm-10.47.04/converter/pbm/pbmtolj.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/pbm/pbmtolj.c 2009-10-21 15:09:33.000000000 +0200
@@ -511,13 +441,13 @@ diff -up netpbm-10.47.04/converter/pbm/pbmtoybm.c.security netpbm-10.47.04/conve
--- netpbm-10.47.04/converter/pbm/pbmtoybm.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/pbm/pbmtoybm.c 2009-10-21 15:09:33.000000000 +0200
@@ -45,6 +45,7 @@ main( argc, argv )
- bitrow = pbm_allocrow( cols );
+ bitrow = pbm_allocrow(cols);
/* Compute padding to round cols up to the nearest multiple of 16. */
+ overflow_add(cols, 16);
- padright = ( ( cols + 15 ) / 16 ) * 16 - cols;
+ padright = ((cols + 15) / 16) * 16 - cols;
- putinit( cols, rows );
+ putinit(cols, rows);
diff -up netpbm-10.47.04/converter/pbm/pbmtozinc.c.security netpbm-10.47.04/converter/pbm/pbmtozinc.c
--- netpbm-10.47.04/converter/pbm/pbmtozinc.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/pbm/pbmtozinc.c 2009-10-21 15:09:33.000000000 +0200
@@ -565,14 +495,14 @@ diff -up netpbm-10.47.04/converter/pbm/thinkjettopbm.l.security netpbm-10.47.04/
diff -up netpbm-10.47.04/converter/pbm/ybmtopbm.c.security netpbm-10.47.04/converter/pbm/ybmtopbm.c
--- netpbm-10.47.04/converter/pbm/ybmtopbm.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/pbm/ybmtopbm.c 2009-10-21 15:09:33.000000000 +0200
-@@ -88,6 +88,7 @@ getinit( file, colsP, rowsP, depthP, pad
- pm_error( "EOF / read error" );
+@@ -88,4 +88,5 @@ getinit( file, colsP, rowsP, depthP, pad
+ pm_error("EOF / read error");
*depthP = 1;
+ overflow_add(*colsP, 15);
- *padrightP = ( ( *colsP + 15 ) / 16 ) * 16 - *colsP;
- bitsperitem = 0;
- }
+ *padrightP = ((*colsP + 15) / 16) * 16 - *colsP;
+}
+
diff -up netpbm-10.47.04/converter/pgm/lispmtopgm.c.security netpbm-10.47.04/converter/pgm/lispmtopgm.c
--- netpbm-10.47.04/converter/pgm/lispmtopgm.c.security 2009-10-21 13:39:06.000000000 +0200
+++ netpbm-10.47.04/converter/pgm/lispmtopgm.c 2009-10-21 15:09:33.000000000 +0200
@@ -707,7 +637,7 @@ diff -up netpbm-10.47.04/converter/ppm/Makefile.security netpbm-10.47.04/convert
leaftoppm mtvtoppm neotoppm \
- pcxtoppm pc1toppm pi1toppm picttoppm pjtoppm \
+ pcxtoppm pc1toppm pi1toppm pjtoppm \
- ppmtoacad ppmtoarbtxt \
+ ppmtoacad ppmtoapplevol ppmtoarbtxt ppmtoascii \
ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm \
ppmtoleaf ppmtolj ppmtomitsu ppmtoneo \
diff -up netpbm-10.47.04/converter/ppm/pcxtoppm.c.security netpbm-10.47.04/converter/ppm/pcxtoppm.c
@@ -894,14 +824,14 @@ diff -up netpbm-10.47.04/converter/ppm/ppmtopict.c.security netpbm-10.47.04/conv
--- netpbm-10.47.04/converter/ppm/ppmtopict.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/ppm/ppmtopict.c 2009-10-21 15:09:33.000000000 +0200
@@ -245,6 +245,8 @@ char *argv[];
- putShort(stdout, 0); /* mode */
-
- /* Finally, write out the data. */
-+ overflow_add(cols/MAX_COUNT, 1);
-+ overflow_add(cols, cols/MAX_COUNT+1);
- packed = (char*) malloc((unsigned)(cols+cols/MAX_COUNT+1));
- oc = 0;
- for (row = 0; row < rows; row++)
+ putShort(stdout, 0); /* mode */
+
+ /* Finally, write out the data. */
++ overflow_add(cols/MAX_COUNT, 1);
++ overflow_add(cols, cols/MAX_COUNT+1);
+ packed = malloc((unsigned)(cols+cols/MAX_COUNT+1));
+ for (row = 0, oc = 0; row < rows; row++)
+ oc += putRow(stdout, row, cols, pixels[row], packed);
diff -up netpbm-10.47.04/converter/ppm/ppmtopj.c.security netpbm-10.47.04/converter/ppm/ppmtopj.c
--- netpbm-10.47.04/converter/ppm/ppmtopj.c.security 2009-10-21 13:39:10.000000000 +0200
+++ netpbm-10.47.04/converter/ppm/ppmtopj.c 2009-10-21 15:09:33.000000000 +0200
@@ -1106,17 +1036,6 @@ diff -up netpbm-10.47.04/editor/pamcut.c.security netpbm-10.47.04/editor/pamcut.
outpam.width = rightcol - leftcol + 1;
outpam.height = bottomrow - toprow + 1;
-diff -up netpbm-10.47.04/editor/pbmpscale.c.security netpbm-10.47.04/editor/pbmpscale.c
---- netpbm-10.47.04/editor/pbmpscale.c.security 2009-10-21 13:38:57.000000000 +0200
-+++ netpbm-10.47.04/editor/pbmpscale.c 2009-10-21 15:27:21.000000000 +0200
-@@ -110,6 +110,7 @@ main(int argc, char ** argv) {
- inrow[0] = inrow[1] = inrow[2] = NULL;
- pbm_readpbminit(ifP, &columns, &rows, &format) ;
-
-+ overflow2(columns, scale);
- outrow = pbm_allocrow(columns*scale) ;
- MALLOCARRAY(flags, columns);
- if (flags == NULL)
diff -up netpbm-10.47.04/editor/pbmreduce.c.security netpbm-10.47.04/editor/pbmreduce.c
--- netpbm-10.47.04/editor/pbmreduce.c.security 2009-10-21 13:38:57.000000000 +0200
+++ netpbm-10.47.04/editor/pbmreduce.c 2009-10-21 15:26:13.000000000 +0200
@@ -1249,29 +1168,6 @@ diff -up netpbm-10.47.04/editor/pnmshear.c.security netpbm-10.47.04/editor/pnmsh
newcols = rows * shearfac + cols + 0.999999;
pnm_writepnminit(stdout, newcols, rows, newmaxval, newformat, 0);
-diff -up netpbm-10.47.04/editor/ppmdither.c.security netpbm-10.47.04/editor/ppmdither.c
---- netpbm-10.47.04/editor/ppmdither.c.security 2009-10-21 13:38:57.000000000 +0200
-+++ netpbm-10.47.04/editor/ppmdither.c 2009-10-21 15:09:34.000000000 +0200
-@@ -111,6 +111,9 @@ dith_matrix(unsigned int const dith_dim)
- (dith_dim * sizeof(int *)) + /* pointers */
- (dith_dim * dith_dim * sizeof(int)); /* data */
-
-+ overflow2(dith_dim, sizeof(int *));
-+ overflow3(dith_dim, dith_dim, sizeof(int));
-+ overflow_add(dith_dim * sizeof(int *), dith_dim * dith_dim * sizeof(int));
- dith_mat = (unsigned int **) malloc(dith_mat_sz);
-
- if (dith_mat == NULL)
-@@ -165,7 +168,8 @@ dith_setup(const unsigned int dith_power
- if (dith_nb < 2)
- pm_error("too few shades for blue, minimum of 2");
-
-- MALLOCARRAY(*colormapP, dith_nr * dith_ng * dith_nb);
-+ overflow2(dith_nr, dith_ng);
-+ *colormapP = malloc3(dith_nr * dith_ng, dith_nb, sizeof(pixel));
- if (*colormapP == NULL)
- pm_error("Unable to allocate space for the color lookup table "
- "(%d by %d by %d pixels).", dith_nr, dith_ng, dith_nb);
diff -up netpbm-10.47.04/editor/specialty/pamoil.c.security netpbm-10.47.04/editor/specialty/pamoil.c
--- netpbm-10.47.04/editor/specialty/pamoil.c.security 2009-10-21 13:38:56.000000000 +0200
+++ netpbm-10.47.04/editor/specialty/pamoil.c 2009-10-21 15:09:33.000000000 +0200
@@ -1283,19 +1179,6 @@ diff -up netpbm-10.47.04/editor/specialty/pamoil.c.security netpbm-10.47.04/edit
MALLOCARRAY(hist, inpam.maxval + 1);
if (hist == NULL)
pm_error("Unable to allocate memory for histogram.");
-diff -up netpbm-10.47.04/generator/pbmpage.c.security netpbm-10.47.04/generator/pbmpage.c
---- netpbm-10.47.04/generator/pbmpage.c.security 2009-10-21 13:38:57.000000000 +0200
-+++ netpbm-10.47.04/generator/pbmpage.c 2009-10-21 15:09:34.000000000 +0200
-@@ -170,6 +170,9 @@ outputPbm(FILE * const file,
- /* We round the allocated row space up to a multiple of 8 so the ugly
- fast code below can work.
- */
-+
-+ overflow_add(bitmap.Width, 7);
-+
- pbmrow = pbm_allocrow(((bitmap.Width+7)/8)*8);
-
- bitmap_cursor = 0;
diff -up netpbm-10.47.04/generator/pbmtext.c.security netpbm-10.47.04/generator/pbmtext.c
--- netpbm-10.47.04/generator/pbmtext.c.security 2009-10-21 13:38:57.000000000 +0200
+++ netpbm-10.47.04/generator/pbmtext.c 2009-10-21 15:23:15.000000000 +0200
@@ -1390,16 +1273,6 @@ diff -up netpbm-10.47.04/lib/libpbm1.c.security netpbm-10.47.04/lib/libpbm1.c
pm_check(file, check_type, need_raster_size, retval_p);
}
}
-diff -up netpbm-10.47.04/lib/libpbmvms.c.security netpbm-10.47.04/lib/libpbmvms.c
---- netpbm-10.47.04/lib/libpbmvms.c.security 2009-10-21 13:39:00.000000000 +0200
-+++ netpbm-10.47.04/lib/libpbmvms.c 2009-10-21 15:09:34.000000000 +0200
-@@ -1,3 +1,5 @@
-+#warning "NOT AUDITED"
-+
- /***************************************************************************
- This file contains library routines needed to build Netpbm for VMS.
- However, as of 2000.05.26, when these were split out of libpbm1.c
-diff -up netpbm-10.47.04/lib/libpm.c.security netpbm-10.47.04/lib/libpm.c
--- netpbm-10.47.04/lib/libpm.c.security 2009-10-21 13:39:00.000000000 +0200
+++ netpbm-10.47.04/lib/libpm.c 2009-10-21 15:09:34.000000000 +0200
@@ -827,4 +827,53 @@ pm_parse_height(const char * const arg)
@@ -1482,18 +1355,6 @@ diff -up netpbm-10.47.04/other/pnmcolormap.c.security netpbm-10.47.04/other/pnmc
}
{
unsigned int const intQuotient = colormap.size / pamP->width;
-diff -up netpbm-10.47.04/urt/README.security netpbm-10.47.04/urt/README
---- netpbm-10.47.04/urt/README.security 2009-10-21 13:39:11.000000000 +0200
-+++ netpbm-10.47.04/urt/README 2009-10-21 15:09:34.000000000 +0200
-@@ -18,3 +18,8 @@ in its initializer in the original. But
- defines stdout as a variable, so that wouldn't compile. So I changed
- it to NULL and added a line to rle_hdr_init to set that field to
- 'stdout' dynamically. 2000.06.02 BJH.
-+
-+Redid the code to check for maths overflows and other crawly horrors.
-+Removed pipe through and compress support (unsafe)
-+
-+Alan Cox <alan@redhat.com>
diff -up netpbm-10.47.04/urt/rle_addhist.c.security netpbm-10.47.04/urt/rle_addhist.c
--- netpbm-10.47.04/urt/rle_addhist.c.security 2009-10-21 13:39:11.000000000 +0200
+++ netpbm-10.47.04/urt/rle_addhist.c 2009-10-21 15:09:34.000000000 +0200
@@ -1630,37 +1491,6 @@ diff -up netpbm-10.47.04/urt/rle_hdr.c.security netpbm-10.47.04/urt/rle_hdr.c
size *= sizeof(char *);
to_hdr->comments = (CONST_DECL char **)malloc( size );
RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->comments, "comments" );
-diff -up netpbm-10.47.04/urt/rle.h.security netpbm-10.47.04/urt/rle.h
---- netpbm-10.47.04/urt/rle.h.security 2009-10-21 13:39:11.000000000 +0200
-+++ netpbm-10.47.04/urt/rle.h 2009-10-21 15:09:34.000000000 +0200
-@@ -14,6 +14,9 @@
- * If you modify this software, you should include a notice giving the
- * name of the person performing the modification, the date of modification,
- * and the reason for such modification.
-+ *
-+ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
-+ * Header declarations needed
- */
- /*
- * rle.h - Global declarations for Utah Raster Toolkit RLE programs.
-@@ -166,6 +169,17 @@ rle_hdr /* End of typedef. *
- */
- extern rle_hdr rle_dflt_hdr;
-
-+/*
-+ * Provided by pm library
-+ */
-+
-+extern void overflow_add(int, int);
-+#define overflow2(a,b) __overflow2(a,b)
-+extern void __overflow2(int, int);
-+extern void overflow3(int, int, int);
-+extern void *malloc2(int, int);
-+extern void *malloc3(int, int, int);
-+extern void *realloc2(void *, int, int);
-
- /* Declare RLE library routines. */
-
diff -up netpbm-10.47.04/urt/rle_open_f.c.security netpbm-10.47.04/urt/rle_open_f.c
--- netpbm-10.47.04/urt/rle_open_f.c.security 2009-10-21 13:39:11.000000000 +0200
+++ netpbm-10.47.04/urt/rle_open_f.c 2009-10-21 15:15:38.000000000 +0200
@@ -1704,11 +1534,11 @@ diff -up netpbm-10.47.04/urt/rle_open_f.c.security netpbm-10.47.04/urt/rle_open_
- *noSubprocessP = FALSE;
-
- if (*mode == 'w')
-- asprintfN(&command, "compress > %s", file_name);
+- pm_asprintf(&command, "compress > %s", file_name);
- else if (*mode == 'a')
-- asprintfN(&command, "compress >> %s", file_name);
+- pm_asprintf(&command, "compress >> %s", file_name);
- else
-- asprintfN(&command, "compress -d < %s", file_name);
+- pm_asprintf(&command, "compress -d < %s", file_name);
-
- *fpP = my_popen(command, mode, &thepid);
-
@@ -1720,7 +1550,7 @@ diff -up netpbm-10.47.04/urt/rle_open_f.c.security netpbm-10.47.04/urt/rle_open_
- if (*catchingChildrenP < MAX_CHILDREN)
- pids[(*catchingChildrenP)++] = thepid;
- }
-- strfree(command);
+- pm_strfree(command);
- } else {
- *noSubprocessP = TRUE;
- *errorP = NULL;
@@ -1815,3 +1645,24 @@ diff -up netpbm-10.47.04/urt/scanargs.c.security netpbm-10.47.04/urt/scanargs.c
#if defined(c_plusplus) && !defined(USE_PROTOTYPES)
#define USE_PROTOTYPES
+--- advanced/urt/rle_hdr.c.old 2012-01-21 05:57:25.000000000 -0500
++++ advanced/urt/rle_hdr.c 2012-01-21 05:57:50.000000000 -0500
+@@ -29,6 +29,18 @@
+
+ #include <string.h>
+
++/*
++ * Provided by pm library
++ */
++
++extern void overflow_add(int, int);
++#define overflow2(a,b) __overflow2(a,b)
++extern void __overflow2(int, int);
++extern void overflow3(int, int, int);
++extern void *malloc2(int, int);
++/*extern void *malloc3(int, int, int);*/
++extern void *realloc2(void *, int, int);
++
+ /*****************************************************************
+ * TAG( rle_names )
+ *
diff --git a/abs/extra/ocaml/PKGBUILD b/abs/extra/ocaml/PKGBUILD
index 7b0cd86..7ba798b 100644
--- a/abs/extra/ocaml/PKGBUILD
+++ b/abs/extra/ocaml/PKGBUILD
@@ -1,9 +1,10 @@
-# $Id: PKGBUILD 88099 2010-08-19 13:05:24Z tpowa $
+# $Id: PKGBUILD 143814 2011-11-29 13:33:35Z stephane $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
-pkgname=ocaml
-pkgver=3.12.0
-pkgrel=1
+pkgbase='ocaml'
+pkgname=('ocaml' 'ocaml-compiler-libs')
+pkgver=3.12.1
+pkgrel=3
pkgdesc="A functional language with OO extensions"
arch=('i686' 'x86_64')
license=('LGPL2' 'custom: QPL-1.0')
@@ -11,19 +12,46 @@ url="http://caml.inria.fr/"
depends=('gdbm')
makedepends=('tk' 'ncurses>=5.6-7' 'libx11')
optdepends=('ncurses: advanced ncurses features' 'tk: advanced tk features')
-source=(http://caml.inria.fr/distrib/ocaml-3.12/$pkgname-$pkgver.tar.gz)
+source=(http://caml.inria.fr/distrib/ocaml-3.12/${pkgname}-${pkgver}.tar.gz)
+md5sums=('814a047085f0f901ab7d8e3a4b7a9e65')
options=('!makeflags' '!emptydirs')
build() {
- cd $srcdir/$pkgname-$pkgver
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure -prefix /usr
- make world.opt || return 1
- make PREFIX=$pkgdir/usr MANDIR=$pkgdir/usr/share/man install || return 1
+ make world.opt
+}
+
+package_ocaml() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make PREFIX="${pkgdir}/usr" MANDIR="${pkgdir}/usr/share/man" install
-# Save >10MB with this one, makepkg only strips debug symbols.
- find ${startdir}/pkg/usr/lib -type f -name '*.so.*' -exec strip --strip-unneeded {} \;
+ # Save >10MB with this one, makepkg only strips debug symbols.
+ #find "${pkgdir}/usr/lib" -type f -name '*.so.*' -exec strip --strip-unneeded {} \;
+
+ # install license
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
+
+package_ocaml-compiler-libs() {
+pkgdesc="Several modules used internally by the OCaml compiler"
+license=('custom: QPL-1.0')
+depends=('ocaml')
+optdepends=()
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ # Install compiler libraries
+ local compiler_libs="${pkgdir}/usr/lib/ocaml/compiler-libs"
+ mkdir -p "$compiler_libs"/{parsing,typing,utils}
+ cp parsing/*.{cmi,cmo,cmx,ml,mli,mll,o} "$compiler_libs"/parsing
+ cp typing/*.{cmi,cmo,cmx,ml,mli,o} "$compiler_libs"/typing
+ cp utils/*.{cmi,cmo,cmx,ml,mli,o} "$compiler_libs"/utils
+ # duplicated by installation
+ rm -f "$compiler_libs"/typing/outcometree.{cmi,mli}
-# install license
-install -D -m 644 $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/ocaml/LICENSE
+ # install license
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
}
-md5sums=('3ba7cc65123c3579f14e7c726d3ee782')
diff --git a/abs/extra/ocaml/fix-ocaml-binutils-2.21.patch b/abs/extra/ocaml/fix-ocaml-binutils-2.21.patch
new file mode 100644
index 0000000..fa7664c
--- /dev/null
+++ b/abs/extra/ocaml/fix-ocaml-binutils-2.21.patch
@@ -0,0 +1,66 @@
+From: Stephane Glondu <steph@glondu.net>
+Date: Tue, 8 Mar 2011 21:17:40 +0100
+Subject: [PATCH] Fix ocamlopt w.r.t. binutils 2.21
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Bug: http://caml.inria.fr/mantis/view.php?id=5237
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=617404
+Authors: Eric Cooper, spiralvoice
+Reviewed-by: Stéphane Glondu <steph@glondu.net>
+---
+ asmcomp/amd64/emit.mlp | 13 +++++++------
+ asmcomp/i386/emit.mlp | 6 +++---
+ 2 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp
+index 4a3f844..525c6e6 100644
+--- a/asmcomp/amd64/emit.mlp
++++ b/asmcomp/amd64/emit.mlp
+@@ -679,17 +679,18 @@ let fundecl fundecl =
+ emit_all true fundecl.fun_body;
+ List.iter emit_call_gc !call_gc_sites;
+ emit_call_bound_errors ();
++ begin match Config.system with
++ "linux" | "gnu" ->
++ ` .type {emit_symbol fundecl.fun_name},@function\n`;
++ ` .size {emit_symbol fundecl.fun_name},.-{emit_symbol fundecl.fun_name}\n`
++ | _ -> ()
++ end;
+ if !float_constants <> [] then begin
+ if macosx
+ then ` .literal8\n`
+ else ` .section .rodata.cst8,\"a\",@progbits\n`;
+ List.iter emit_float_constant !float_constants
+- end;
+- match Config.system with
+- "linux" | "gnu" ->
+- ` .type {emit_symbol fundecl.fun_name},@function\n`;
+- ` .size {emit_symbol fundecl.fun_name},.-{emit_symbol fundecl.fun_name}\n`
+- | _ -> ()
++ end
+
+ (* Emission of data *)
+
+diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp
+index 2992f29..0b1252c 100644
+--- a/asmcomp/i386/emit.mlp
++++ b/asmcomp/i386/emit.mlp
+@@ -905,12 +905,12 @@ let fundecl fundecl =
+ emit_all true fundecl.fun_body;
+ List.iter emit_call_gc !call_gc_sites;
+ emit_call_bound_errors ();
+- List.iter emit_float_constant !float_constants;
+- match Config.system with
++ begin match Config.system with
+ "linux_elf" | "bsd_elf" | "gnu" ->
+ ` .type {emit_symbol fundecl.fun_name},@function\n`;
+ ` .size {emit_symbol fundecl.fun_name},.-{emit_symbol fundecl.fun_name}\n`
+- | _ -> ()
++ | _ -> () end;
++ List.iter emit_float_constant !float_constants
+
+
+ (* Emission of data *)
+--
diff --git a/abs/extra/ocaml/ocaml-3.12.1-3.src.tar.gz b/abs/extra/ocaml/ocaml-3.12.1-3.src.tar.gz
new file mode 120000
index 0000000..140a1a6
--- /dev/null
+++ b/abs/extra/ocaml/ocaml-3.12.1-3.src.tar.gz
@@ -0,0 +1 @@
+/data/pkg_repo/src_packages/ocaml-3.12.1-3.src.tar.gz \ No newline at end of file
diff --git a/abs/extra/opencore-amr/PKGBUILD b/abs/extra/opencore-amr/PKGBUILD
index 2c569d8..71d8eb5 100644
--- a/abs/extra/opencore-amr/PKGBUILD
+++ b/abs/extra/opencore-amr/PKGBUILD
@@ -1,24 +1,27 @@
-# $Id: PKGBUILD 62600 2010-01-10 14:06:30Z ibiru $
+# $Id: PKGBUILD 151248 2012-02-25 09:58:05Z ibiru $
# Maintainer: Ionut Biru <ionut@archlinux.ro>
# Contributor: WAntilles <wantilles@adslgr.com>
pkgname=opencore-amr
-pkgver=0.1.2
+pkgver=0.1.3
pkgrel=1
pkgdesc="Open source implementation of the Adaptive Multi Rate (AMR) speech codec"
arch=('i686' 'x86_64')
license=('APACHE')
url="http://opencore-amr.sourceforge.net/"
-depends=('gcc-libs')
-source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+depends=(glibc)
options=('!libtool')
-md5sums=('8e8b8b253eb046340ff7b6bf7a6ccd3e')
+md5sums=('09d2c5dfb43a9f6e9fec8b1ae678e725')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-static
+ make
+}
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR=${pkgdir}/ install || return 1
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
}
diff --git a/abs/extra/openjpeg/30_fix_build_for_debian.dpatch b/abs/extra/openjpeg/30_fix_build_for_debian.dpatch
deleted file mode 100644
index afd9950..0000000
--- a/abs/extra/openjpeg/30_fix_build_for_debian.dpatch
+++ /dev/null
@@ -1,70 +0,0 @@
-
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 30_fix_build_for_debian.dpatch by <robin.cornelius@gmail.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Dont apply the -s strip flag to the shared lib debian will do it for us
-## DP: where necessary
-## DP: Remove unnecessary linkage on lstdc++ and lm and add missing linkage for -lm
-
-@DPATCH@
-
-Index: ./Makefile
-===================================================================
---- ./Makefile (revision 96)
-+++ ./Makefile (working copy)
-@@ -18,8 +18,7 @@
- # Converts cr/lf to just lf
- DOS2UNIX = dos2unix
-
--COMPILERFLAGS = -Wall -O3 -ffast-math -std=c99 -fPIC
--LIBRARIES = -lstdc++
-+COMPILERFLAGS = -Wall -O3 -ffast-math -std=c99 -fPIC -g $(EXTRA_CFLAGS)
-
- MODULES = $(SRCS:.c=.o)
- CFLAGS = $(COMPILERFLAGS) $(INCLUDE)
-@@ -54,7 +53,7 @@
- $(AR) r $@ $(MODULES)
-
- $(SHAREDLIB): $(MODULES)
-- $(CC) -s -shared -Wl,-soname,$(LIBNAME) -o $@ $(MODULES) $(LIBRARIES)
-+ $(CC) -shared -Wl,-soname,$(LIBNAME) -o $@ $(MODULES) -lm
-
- install: OpenJPEG
- install -d '$(DESTDIR)$(INSTALL_LIBDIR)' '$(DESTDIR)$(INSTALL_INCLUDE)'
-
-Index: ./indexer_JPIP/Makefile
-===================================================================
---- ./indexer_JPIP/Makefile (revision 95)
-+++ ./indexer_JPIP/Makefile (working copy)
-@@ -1,7 +1,6 @@
- CC = gcc
-
--LDFLAGS = -lm
--CFLAGS = -Wall
-+CFLAGS = -Wall $(EXTRA_CFLAGS)
-
- all: index_create
-
-Index: ./codec/Makefile
-===================================================================
---- ./codec/Makefile (revision 96)
-+++ ./codec/Makefile (working copy)
-@@ -1,13 +1,13 @@
- # Makefile for the main OpenJPEG codecs: j2k_to_image and image_to_j2k
-
--CFLAGS = -O3 -lstdc++ # -g -p -pg
-+CFLAGS = $(EXTRA_CFLAGS) # -g -p -pg
-
- all: j2k_to_image image_to_j2k
-
--j2k_to_image: j2k_to_image.c ../libopenjpeg.a
-+j2k_to_image: j2k_to_image.c
- gcc $(CFLAGS) compat/getopt.c index.c convert.c j2k_to_image.c -o j2k_to_image -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
-
--image_to_j2k: image_to_j2k.c ../libopenjpeg.a
-+image_to_j2k: image_to_j2k.c
- gcc $(CFLAGS) compat/getopt.c index.c convert.c image_to_j2k.c -o image_to_j2k -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
-
- clean:
-
diff --git a/abs/extra/openjpeg/PKGBUILD b/abs/extra/openjpeg/PKGBUILD
index 087da2f..7055c19 100644
--- a/abs/extra/openjpeg/PKGBUILD
+++ b/abs/extra/openjpeg/PKGBUILD
@@ -1,27 +1,30 @@
-# $Id: $
+# $Id: PKGBUILD 156266 2012-04-16 14:12:28Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=openjpeg
-pkgver=1.3
-_pkgver=v1_3
-pkgrel=3
+pkgver=1.5.0
+pkgrel=1
pkgdesc="An open source JPEG 2000 codec"
arch=(i686 x86_64)
license=('BSD')
url="http://www.openjpeg.org"
-depends=('glibc')
-source=(http://www.openjpeg.org/openjpeg_${_pkgver}.tar.gz
- 30_fix_build_for_debian.dpatch)
-md5sums=('f9a3ccfa91ac34b589e9bf7577ce8ff9'
- '2557f485513e77f6dcea77f4741c4fa1')
+depends=('zlib')
+options=('!libtool')
+source=(http://openjpeg.googlecode.com/files/openjpeg-${pkgver}.tar.gz)
+sha1sums=('dce705ae45f137e4698a8cf39d1fbf22bc434fa8')
build() {
- cd "${srcdir}/OpenJPEG_${_pkgver}"
- patch -Np1 -i "${srcdir}/30_fix_build_for_debian.dpatch" || return 1
- make || return 1
- make DESTDIR="${pkgdir}" install || return 1
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # make sure we use system libs
+ rm -rf thirtparty
+ ./configure --prefix=/usr \
+ --disable-static --disable-silent-rules
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
install -m755 -d "${pkgdir}/usr/share/licenses/openjpeg"
- tr '\r' '\n' < license.txt > "${pkgdir}/usr/share/licenses/openjpeg/license.txt" || return 1
- chmod 644 "${pkgdir}/usr/share/licenses/openjpeg/license.txt" || return 1
- ln -s libopenjpeg.so.2 "${pkgdir}/usr/lib/libopenjpeg.so" || return 1
+ install -m644 LICENSE "${pkgdir}/usr/share/licenses/openjpeg/LICENSE"
}
diff --git a/abs/extra/openmpi/PKGBUILD b/abs/extra/openmpi/PKGBUILD
index 7dd1084..3e57dde 100644
--- a/abs/extra/openmpi/PKGBUILD
+++ b/abs/extra/openmpi/PKGBUILD
@@ -1,38 +1,45 @@
-# $Id$
+# $Id: PKGBUILD 159287 2012-05-20 22:11:21Z stephane $
# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
pkgname=openmpi
-pkgver=1.5.3
-pkgrel=4
+pkgver=1.6
+pkgrel=2
pkgdesc="High performance message passing library (MPI)"
arch=('i686' 'x86_64')
url="http://www.open-mpi.org"
license=('custom')
-depends=('gcc' 'gcc-fortran' 'openssh' 'valgrind' 'libtool' 'hwloc')
-makedepends=('net-tools')
+depends=('gcc-fortran' 'openssh' 'valgrind' 'libltdl' 'hwloc')
+makedepends=('inetutils')
options=(!libtool)
-source=(http://www.open-mpi.org/software/ompi/v1.5/downloads/${pkgname}-${pkgver}.tar.bz2)
-sha1sums=('669565c708deab82ad4069d82675b2020eb0e0c6')
+source=(http://www.open-mpi.org/software/ompi/v1.6/downloads/${pkgname}-${pkgver}.tar.bz2
+ openmpi-hostfile.patch)
+sha1sums=('8b81eea712bb8f8120468003b5f29baecedf2367'
+ 'a76da03418a106d57cfd020d0f8d887d7ec9225b')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+ # Make sure we use the system ltdl librariry rather than the ones in the tarball
+ rm -r opal/libltdl
+
+ # Search for openmpi-default-hostfile in /etc/openmpi
+ patch -Np1 -i ../openmpi-hostfile.patch
+
./configure --prefix=/usr \
--sysconfdir=/etc/${pkgname} \
--mandir=/usr/share/man \
--enable-mpi-f90 \
--libdir=/usr/lib/${pkgname} \
--with-threads=posix \
- --enable-mpi-threads \
--enable-smp-locks \
--with-valgrind \
--enable-memchecker \
--enable-debug \
--enable-pretty-print-stacktrace \
--without-slurm \
- --with-hwloc=external \
- --with-libltdl=/usr \
+ --with-hwloc=/usr \
+ --with-libltdl=/usr \
FC=/usr/bin/gfortran \
- LDFLAGS='-Wl,-z,noexecstack'
+ LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
make
}
@@ -41,13 +48,19 @@ package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
+ # FS#28583
+ install -d -m 755 "${pkgdir}"/usr/lib/pkgconfig
+ for i in ompi-c.pc ompi-cxx.pc ompi-f77.pc ompi-f90.pc ompi.pc; do
+ ln -sf /usr/lib/openmpi/pkgconfig/${i} "${pkgdir}"/usr/lib/pkgconfig/
+ done
+
# Openmpi's otfinfo conflicts with the one from texlive
- mv "${pkgdir}"/usr/bin/otfinfo "${pkgdir}"/usr/bin/otfinfompi
+ mv "${pkgdir}"/usr/bin/otfinfo{,mpi}
# Openmpi's otfdump conflicts with the one from libotf
- mv "${pkgdir}"/usr/bin/otfdump "${pkgdir}"/usr/bin/otfdumpompi
+ mv "${pkgdir}"/usr/bin/otfdump{,ompi}
- # Symlink points to non-existing ortec++.1
+ # Remove dangling symlink
rm "${pkgdir}"/usr/share/man/man1/orteCC.1
install -d -m 755 "${pkgdir}"/etc/ld.so.conf.d
diff --git a/abs/extra/openmpi/openmpi-hostfile.patch b/abs/extra/openmpi/openmpi-hostfile.patch
new file mode 100644
index 0000000..f637767
--- /dev/null
+++ b/abs/extra/openmpi/openmpi-hostfile.patch
@@ -0,0 +1,12 @@
+diff -up openmpi-1.6/orte/runtime/orte_mca_params.c.hostfile openmpi-1.6/orte/runtime/orte_mca_params.c
+--- openmpi-1.6/orte/runtime/orte_mca_params.c.hostfile 2012-04-24 13:18:21.000000000 -0600
++++ openmpi-1.6/orte/runtime/orte_mca_params.c 2012-05-15 16:35:24.769565442 -0600
+@@ -225,7 +225,7 @@ int orte_register_params(void)
+ false, false, 1000, &orte_timeout_usec_per_proc);
+
+ /* default hostfile */
+- asprintf(&orte_default_hostfile, "%s/etc/openmpi-default-hostfile", opal_install_dirs.prefix);
++ asprintf(&orte_default_hostfile, "%s/openmpi-default-hostfile", opal_install_dirs.sysconfdir);
+ mca_base_param_reg_string_name("orte", "default_hostfile",
+ "Name of the default hostfile (relative or absolute path, \"none\" to ignore environmental or default MCA param setting)",
+ false, false, orte_default_hostfile, &orte_default_hostfile);
diff --git a/abs/extra/openslp/PKGBUILD b/abs/extra/openslp/PKGBUILD
index 9ba1f94..70e0833 100644
--- a/abs/extra/openslp/PKGBUILD
+++ b/abs/extra/openslp/PKGBUILD
@@ -1,13 +1,14 @@
-# $Id: PKGBUILD 75251 2010-04-01 04:53:24Z allan $
+# $Id: PKGBUILD 150461 2012-02-18 00:02:24Z allan $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
pkgname=openslp
pkgver=1.2.1
-pkgrel=3
+pkgrel=4
pkgdesc="Open-source implementation of Service Location Protocol"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
url="http://www.openslp.org"
license=('BSD')
-depends=('glibc' 'bash' 'openssl')
+depends=('bash' 'openssl')
backup=('etc/slp.conf' 'etc/slp.reg' 'etc/slp.spi')
options=('!libtool')
source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz rc.slpd)
@@ -15,9 +16,13 @@ md5sums=('ff9999d1b44017281dd00ed2c4d32330' '4f6889a5944894b8be2c01404a9566d2')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR=${pkgdir} DOC_DIR=/usr/share/doc/openslp-${pkgver} install || return 1
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} DOC_DIR=/usr/share/doc/openslp-${pkgver} install
install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
- install -D -m755 ../rc.slpd ${pkgdir}/etc/rc.d/slpd
+ install -D -m755 $srcdir/rc.slpd ${pkgdir}/etc/rc.d/slpd
}
diff --git a/abs/extra/opensp/PKGBUILD b/abs/extra/opensp/PKGBUILD
index 1f79263..ff23a6d 100644
--- a/abs/extra/opensp/PKGBUILD
+++ b/abs/extra/opensp/PKGBUILD
@@ -1,29 +1,35 @@
-# $Id: PKGBUILD 27689 2009-02-24 21:08:28Z eric $
-# Maintainer: dorphell <dorphell@archlinux.org>
+# $Id: PKGBUILD 150566 2012-02-18 14:51:32Z pierre $
+# Maintainer:
+# Contributor: dorphell <dorphell@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=opensp
pkgver=1.5.2
-pkgrel=1
-pkgdesc="A library and a set of tools for validating, parsing and manipulating SGML and XML documents."
+pkgrel=3
+pkgdesc="A library and a set of tools for validating, parsing and manipulating SGML and XML documents"
arch=('i686' 'x86_64')
url="http://openjade.sourceforge.net/"
license=('BSD')
depends=('gcc-libs')
makedepends=('xmlto' 'docbook-xsl')
options=('!libtool')
-source=(http://download.sourceforge.net/openjade/OpenSP-$pkgver.tar.gz)
+source=("http://download.sourceforge.net/openjade/OpenSP-$pkgver.tar.gz")
md5sums=('670b223c5d12cee40c9137be86b6c39b')
build() {
- cd $srcdir/OpenSP-$pkgver
- ./configure --prefix=/usr --mandir=/usr/share/man \
- --disable-nls \
- --enable-http \
- --enable-default-catalog=/etc/sgml/catalog:/etc/xml/catalog \
- --enable-default-search-path=/usr/share/sgml:/usr/share/xml \
- --enable-xml-messages || return 1
- make || return 1
- make DESTDIR=$pkgdir install || return 1
- install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+ cd "${srcdir}"/OpenSP-$pkgver
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --disable-nls \
+ --enable-http \
+ --enable-default-catalog=/etc/sgml/catalog:/etc/xml/catalog \
+ --enable-default-search-path=/usr/share/sgml:/usr/share/xml \
+ --enable-xml-messages
+ make
+}
+
+package() {
+ cd "${srcdir}"/OpenSP-$pkgver
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/$pkgname/LICENSE
}
diff --git a/abs/extra/orc/PKGBUILD b/abs/extra/orc/PKGBUILD
index 659bc47..dcdde8b 100644
--- a/abs/extra/orc/PKGBUILD
+++ b/abs/extra/orc/PKGBUILD
@@ -1,7 +1,7 @@
-# $Id: PKGBUILD 98440 2010-11-08 23:53:36Z ibiru $
+# $Id: PKGBUILD 149305 2012-02-06 18:30:33Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=orc
-pkgver=0.4.11
+pkgver=0.4.16
pkgrel=1
pkgdesc="The Oild Runtime Compiler"
arch=('i686' 'x86_64')
@@ -9,16 +9,17 @@ license=('custom')
url="http://code.entropywave.com/projects/orc/"
depends=('glibc')
options=('!libtool')
-source=(http://code.entropywave.com/download/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-md5sums=('b8b0b148d319422c3ad250c29483b3c4')
+source=(http://code.entropywave.com/download/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('e482932e544c847761449b106ecbc483')
build () {
- cd "${srcdir}/${pkgname}-${pkgver}"
-
- ./configure --prefix=/usr \
- --disable-static
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-static
make
- make DESTDIR=${pkgdir} install
- install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
}
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git a/abs/extra/perl-class-inspector/PKGBUILD b/abs/extra/perl-class-inspector/PKGBUILD
index fd138b8..5eb8012 100644
--- a/abs/extra/perl-class-inspector/PKGBUILD
+++ b/abs/extra/perl-class-inspector/PKGBUILD
@@ -1,29 +1,48 @@
-#$Id:$
+# Maintainer: Justin "juster" Davis <jrcd83@gmail.com>
+# $Id: PKGBUILD 150510 2012-02-18 11:51:33Z allan $
+
pkgname=perl-class-inspector
-_realname=Class-Inspector
-pkgver=1.24
+pkgver=1.27
pkgrel=1
-pkgdesc="'Get information about a class and its structure'"
-arch=(i686 x86_64)
-license=('GPL' 'Artistic')
-url="http://search.cpan.org/~adamk/Class-Inspector"
+pkgdesc="Get information about a class and its structure"
+arch=(any)
+license=(PerlArtistic GPL)
options=(!emptydirs)
-depends=('perl>=5.10.0')
-provides=('class-inspector=1.24' 'Class::Inspector=1.24' 'perl-class-inspector=1.24' 'Class::Inspector::Functions=1.24' 'perl-class-inspector-functions=1.24')
-source=(http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Class-Inspector-1.24.tar.gz)
-md5sums=('609189b49f64d329a6e413e0a6d8724a')
+depends=('perl>=5.6.0')
+url=http://search.cpan.org/dist/Class-Inspector
+source=("http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Class-Inspector-${pkgver}.tar.gz")
+md5sums=('52e6391cae3c2abdfcd1d450b42bba7e')
+sha512sums=('e16786d32c695863b474036c494efa5ee2ea84f5c460e49fa58bb645c0332810796ddb81865f30e1c942a697556af9e26b47a4dc4300c10da37fde499f9507d8')
+_distdir="${srcdir}/Class-Inspector-${pkgver}"
build() {
- cd "${srcdir}/${_realname}-${pkgver}"
- # install module in vendor directories.
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
- make
- make install DESTDIR=${pkgdir}
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \
+ PERL_AUTOINSTALL=--skipdeps \
+ PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \
+ PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \
+ MODULEBUILDRC=/dev/null
- # remove perllocal.pod and .packlist
- find ${pkgdir} -name perllocal.pod -delete
- find ${pkgdir} -name .packlist -delete
+ cd "$_distdir"
+ /usr/bin/perl Makefile.PL
+ make
+ )
}
-# vim:set ts=2 sw=2 et:
+check() {
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB=""
+ cd "$_distdir"
+ make test
+ )
+}
+package() {
+ cd "$_distdir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+}
+
+# Local Variables:
+# mode: shell-script
+# sh-basic-offset: 2
+# End:
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/perl-sgmls/perl-sgmls-1.03ii-4.src.tar.gz b/abs/extra/perl-sgmls/perl-sgmls-1.03ii-4.src.tar.gz
deleted file mode 100644
index 317169f..0000000
--- a/abs/extra/perl-sgmls/perl-sgmls-1.03ii-4.src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/abs/extra/polkit/CVE-2011-1485.patch b/abs/extra/polkit/CVE-2011-1485.patch
deleted file mode 100644
index f7054a6..0000000
--- a/abs/extra/polkit/CVE-2011-1485.patch
+++ /dev/null
@@ -1,908 +0,0 @@
-From dd848a42a64a3b22a0cc60f6657b56ce9b6010ae Mon Sep 17 00:00:00 2001
-From: David Zeuthen <davidz@redhat.com>
-Date: Thu, 31 Mar 2011 16:59:09 +0000
-Subject: PolkitUnixProcess: Clarify that the real uid is returned, not the effective one
-
-On Linux, also switch to parsing /proc/<pid>/status instead of relying
-on the st_uid returned by stat(2) to be the uid we want.
-
-This was pointed out by Neel Mehta <nmehta@google.com>. Thanks!
-
-Signed-off-by: David Zeuthen <davidz@redhat.com>
----
-diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
-index d95a1d4..876da69 100644
---- a/src/polkit/polkitunixprocess.c
-+++ b/src/polkit/polkitunixprocess.c
-@@ -24,9 +24,7 @@
- #endif
-
- #include <sys/types.h>
--#ifndef HAVE_FREEBSD
--#include <sys/stat.h>
--#else
-+#ifdef HAVE_FREEBSD
- #include <sys/param.h>
- #include <sys/sysctl.h>
- #include <sys/user.h>
-@@ -34,6 +32,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <errno.h>
-+#include <stdio.h>
-
- #include "polkitunixprocess.h"
- #include "polkitsubject.h"
-@@ -208,6 +207,8 @@ polkit_unix_process_get_pid (PolkitUnixProcess *process)
- *
- * Gets the uid of the owner of @process.
- *
-+ * Note that this returns the real user-id (not the effective user-id) of @process.
-+ *
- * Returns: The UNIX user id of the owner for @process or 0 if @error is set.
- **/
- gint
-@@ -215,17 +216,21 @@ polkit_unix_process_get_owner (PolkitUnixProcess *process,
- GError **error)
- {
- gint result;
-+ gchar *contents;
-+ gchar **lines;
- #ifdef HAVE_FREEBSD
- struct kinfo_proc p;
- #else
-- struct stat statbuf;
-- char procbuf[32];
-+ gchar filename[64];
-+ guint n;
- #endif
-
- g_return_val_if_fail (POLKIT_IS_UNIX_PROCESS (process), 0);
- g_return_val_if_fail (error == NULL || *error == NULL, 0);
-
- result = 0;
-+ lines = NULL;
-+ contents = NULL;
-
- #ifdef HAVE_FREEBSD
- if (get_kinfo_proc (process->pid, &p) == 0)
-@@ -241,23 +246,52 @@ polkit_unix_process_get_owner (PolkitUnixProcess *process,
-
- result = p.ki_uid;
- #else
-- g_snprintf (procbuf, sizeof procbuf, "/proc/%d", process->pid);
-- if (stat (procbuf, &statbuf) != 0)
-+
-+ /* see 'man proc' for layout of the status file
-+ *
-+ * Uid, Gid: Real, effective, saved set, and file system UIDs (GIDs).
-+ */
-+ g_snprintf (filename, sizeof filename, "/proc/%d/status", process->pid);
-+ if (!g_file_get_contents (filename,
-+ &contents,
-+ NULL,
-+ error))
- {
-- g_set_error (error,
-- POLKIT_ERROR,
-- POLKIT_ERROR_FAILED,
-- "stat() failed for /proc/%d: %s",
-- process->pid,
-- g_strerror (errno));
- goto out;
- }
-+ lines = g_strsplit (contents, "\n", -1);
-+ for (n = 0; lines != NULL && lines[n] != NULL; n++)
-+ {
-+ gint real_uid, effective_uid;
-+ if (!g_str_has_prefix (lines[n], "Uid:"))
-+ continue;
-+ if (sscanf (lines[n] + 4, "%d %d", &real_uid, &effective_uid) != 2)
-+ {
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Unexpected line `%s' in file %s",
-+ lines[n],
-+ filename);
-+ goto out;
-+ }
-+ else
-+ {
-+ result = real_uid;
-+ goto out;
-+ }
-+ }
-
-- result = statbuf.st_uid;
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Didn't find any line starting with `Uid:' in file %s",
-+ filename);
- #endif
-
-- out:
--
-+out:
-+ g_strfreev (lines);
-+ g_free (contents);
- return result;
- }
-
---
-cgit v0.8.3-6-g21f6
-From 129b6223a19e7fb2753f8cad7957ac5402394076 Mon Sep 17 00:00:00 2001
-From: David Zeuthen <davidz@redhat.com>
-Date: Fri, 01 Apr 2011 16:09:45 +0000
-Subject: Make PolkitUnixProcess also record the uid of the process
-
-This is needed to avoid possible TOCTTOU issues since a process can
-change both its real uid and effective uid.
-
-Signed-off-by: David Zeuthen <davidz@redhat.com>
----
-diff --git a/docs/polkit/polkit-1-sections.txt b/docs/polkit/polkit-1-sections.txt
-index 12141e3..9f4fcf8 100644
---- a/docs/polkit/polkit-1-sections.txt
-+++ b/docs/polkit/polkit-1-sections.txt
-@@ -145,10 +145,13 @@ POLKIT_UNIX_SESSION_GET_CLASS
- PolkitUnixProcess
- polkit_unix_process_new
- polkit_unix_process_new_full
-+polkit_unix_process_new_for_owner
-+polkit_unix_process_set_pid
- polkit_unix_process_get_pid
-+polkit_unix_process_set_start_time
- polkit_unix_process_get_start_time
--polkit_unix_process_set_pid
--polkit_unix_process_get_owner
-+polkit_unix_process_set_uid
-+polkit_unix_process_get_uid
- <SUBSECTION Standard>
- PolkitUnixProcessClass
- POLKIT_UNIX_PROCESS
-diff --git a/src/polkit/polkitsubject.c b/src/polkit/polkitsubject.c
-index 577afec..d2c4c20 100644
---- a/src/polkit/polkitsubject.c
-+++ b/src/polkit/polkitsubject.c
-@@ -238,13 +238,18 @@ polkit_subject_from_string (const gchar *str,
- {
- gint scanned_pid;
- guint64 scanned_starttime;
-- if (sscanf (str, "unix-process:%d:%" G_GUINT64_FORMAT, &scanned_pid, &scanned_starttime) == 2)
-+ gint scanned_uid;
-+ if (sscanf (str, "unix-process:%d:%" G_GUINT64_FORMAT ":%d", &scanned_pid, &scanned_starttime, &scanned_uid) == 3)
-+ {
-+ subject = polkit_unix_process_new_for_owner (scanned_pid, scanned_starttime, scanned_uid);
-+ }
-+ else if (sscanf (str, "unix-process:%d:%" G_GUINT64_FORMAT, &scanned_pid, &scanned_starttime) == 2)
- {
- subject = polkit_unix_process_new_full (scanned_pid, scanned_starttime);
- }
- else if (sscanf (str, "unix-process:%d", &scanned_pid) == 1)
- {
-- subject = polkit_unix_process_new_full (scanned_pid, 0);
-+ subject = polkit_unix_process_new (scanned_pid);
- if (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) == 0)
- {
- g_object_unref (subject);
-@@ -297,6 +302,8 @@ polkit_subject_to_gvariant (PolkitSubject *subject)
- g_variant_new_uint32 (polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject))));
- g_variant_builder_add (&builder, "{sv}", "start-time",
- g_variant_new_uint64 (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject))));
-+ g_variant_builder_add (&builder, "{sv}", "uid",
-+ g_variant_new_int32 (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject))));
- }
- else if (POLKIT_IS_UNIX_SESSION (subject))
- {
-@@ -395,6 +402,7 @@ polkit_subject_new_for_gvariant (GVariant *variant,
- GVariant *v;
- guint32 pid;
- guint64 start_time;
-+ gint32 uid;
-
- v = lookup_asv (details_gvariant, "pid", G_VARIANT_TYPE_UINT32, error);
- if (v == NULL)
-@@ -414,7 +422,18 @@ polkit_subject_new_for_gvariant (GVariant *variant,
- start_time = g_variant_get_uint64 (v);
- g_variant_unref (v);
-
-- ret = polkit_unix_process_new_full (pid, start_time);
-+ v = lookup_asv (details_gvariant, "uid", G_VARIANT_TYPE_INT32, error);
-+ if (v != NULL)
-+ {
-+ uid = g_variant_get_int32 (v);
-+ g_variant_unref (v);
-+ }
-+ else
-+ {
-+ uid = -1;
-+ }
-+
-+ ret = polkit_unix_process_new_for_owner (pid, start_time, uid);
- }
- else if (g_strcmp0 (kind, "unix-session") == 0)
- {
-diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
-index 876da69..913be3a 100644
---- a/src/polkit/polkitunixprocess.c
-+++ b/src/polkit/polkitunixprocess.c
-@@ -62,6 +62,7 @@ struct _PolkitUnixProcess
-
- gint pid;
- guint64 start_time;
-+ gint uid;
- };
-
- struct _PolkitUnixProcessClass
-@@ -74,6 +75,7 @@ enum
- PROP_0,
- PROP_PID,
- PROP_START_TIME,
-+ PROP_UID
- };
-
- static void subject_iface_init (PolkitSubjectIface *subject_iface);
-@@ -81,6 +83,9 @@ static void subject_iface_init (PolkitSubjectIface *subject_iface);
- static guint64 get_start_time_for_pid (gint pid,
- GError **error);
-
-+static gint _polkit_unix_process_get_owner (PolkitUnixProcess *process,
-+ GError **error);
-+
- #ifdef HAVE_FREEBSD
- static gboolean get_kinfo_proc (gint pid, struct kinfo_proc *p);
- #endif
-@@ -92,6 +97,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixProcess, polkit_unix_process, G_TYPE_OBJECT,
- static void
- polkit_unix_process_init (PolkitUnixProcess *unix_process)
- {
-+ unix_process->uid = -1;
- }
-
- static void
-@@ -108,6 +114,10 @@ polkit_unix_process_get_property (GObject *object,
- g_value_set_int (value, unix_process->pid);
- break;
-
-+ case PROP_UID:
-+ g_value_set_int (value, unix_process->uid);
-+ break;
-+
- case PROP_START_TIME:
- g_value_set_uint64 (value, unix_process->start_time);
- break;
-@@ -132,6 +142,14 @@ polkit_unix_process_set_property (GObject *object,
- polkit_unix_process_set_pid (unix_process, g_value_get_int (value));
- break;
-
-+ case PROP_UID:
-+ polkit_unix_process_set_uid (unix_process, g_value_get_int (value));
-+ break;
-+
-+ case PROP_START_TIME:
-+ polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value));
-+ break;
-+
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
-@@ -139,12 +157,39 @@ polkit_unix_process_set_property (GObject *object,
- }
-
- static void
-+polkit_unix_process_constructed (GObject *object)
-+{
-+ PolkitUnixProcess *process = POLKIT_UNIX_PROCESS (object);
-+
-+ /* sets start_time and uid in case they are unset */
-+
-+ if (process->start_time == 0)
-+ process->start_time = get_start_time_for_pid (process->pid, NULL);
-+
-+ if (process->uid == -1)
-+ {
-+ GError *error;
-+ error = NULL;
-+ process->uid = _polkit_unix_process_get_owner (process, &error);
-+ if (error != NULL)
-+ {
-+ process->uid = -1;
-+ g_error_free (error);
-+ }
-+ }
-+
-+ if (G_OBJECT_CLASS (polkit_unix_process_parent_class)->constructed != NULL)
-+ G_OBJECT_CLASS (polkit_unix_process_parent_class)->constructed (object);
-+}
-+
-+static void
- polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
- {
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->get_property = polkit_unix_process_get_property;
- gobject_class->set_property = polkit_unix_process_set_property;
-+ gobject_class->constructed = polkit_unix_process_constructed;
-
- /**
- * PolkitUnixProcess:pid:
-@@ -156,7 +201,7 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
- g_param_spec_int ("pid",
- "Process ID",
- "The UNIX process ID",
-- -1,
-+ 0,
- G_MAXINT,
- 0,
- G_PARAM_CONSTRUCT |
-@@ -166,6 +211,27 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
- G_PARAM_STATIC_NICK));
-
- /**
-+ * PolkitUnixProcess:uid:
-+ *
-+ * The UNIX user id of the process or -1 if unknown.
-+ *
-+ * Note that this is the real user-id, not the effective user-id.
-+ */
-+ g_object_class_install_property (gobject_class,
-+ PROP_UID,
-+ g_param_spec_int ("uid",
-+ "User ID",
-+ "The UNIX user ID",
-+ -1,
-+ G_MAXINT,
-+ -1,
-+ G_PARAM_CONSTRUCT |
-+ G_PARAM_READWRITE |
-+ G_PARAM_STATIC_NAME |
-+ G_PARAM_STATIC_BLURB |
-+ G_PARAM_STATIC_NICK));
-+
-+ /**
- * PolkitUnixProcess:start-time:
- *
- * The start time of the process.
-@@ -178,7 +244,8 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
- 0,
- G_MAXUINT64,
- 0,
-- G_PARAM_READABLE |
-+ G_PARAM_CONSTRUCT |
-+ G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
- G_PARAM_STATIC_BLURB |
- G_PARAM_STATIC_NICK));
-@@ -186,113 +253,50 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
- }
-
- /**
-- * polkit_unix_process_get_pid:
-+ * polkit_unix_process_get_uid:
- * @process: A #PolkitUnixProcess.
- *
-- * Gets the process id for @process.
-+ * Gets the user id for @process. Note that this is the real user-id,
-+ * not the effective user-id.
- *
-- * Returns: The process id for @process.
-+ * Returns: The user id for @process or -1 if unknown.
- */
- gint
--polkit_unix_process_get_pid (PolkitUnixProcess *process)
-+polkit_unix_process_get_uid (PolkitUnixProcess *process)
- {
-- g_return_val_if_fail (POLKIT_IS_UNIX_PROCESS (process), 0);
-- return process->pid;
-+ g_return_val_if_fail (POLKIT_IS_UNIX_PROCESS (process), -1);
-+ return process->uid;
- }
-
- /**
-- * polkit_unix_process_get_owner:
-+ * polkit_unix_process_set_uid:
- * @process: A #PolkitUnixProcess.
-- * @error: (allow-none): Return location for error or %NULL.
-+ * @uid: The user id to set for @process or -1 to unset it.
- *
-- * Gets the uid of the owner of @process.
-+ * Sets the (real, not effective) user id for @process.
-+ */
-+void
-+polkit_unix_process_set_uid (PolkitUnixProcess *process,
-+ gint uid)
-+{
-+ g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process));
-+ g_return_if_fail (uid >= -1);
-+ process->uid = uid;
-+}
-+
-+/**
-+ * polkit_unix_process_get_pid:
-+ * @process: A #PolkitUnixProcess.
- *
-- * Note that this returns the real user-id (not the effective user-id) of @process.
-+ * Gets the process id for @process.
- *
-- * Returns: The UNIX user id of the owner for @process or 0 if @error is set.
-- **/
-+ * Returns: The process id for @process.
-+ */
- gint
--polkit_unix_process_get_owner (PolkitUnixProcess *process,
-- GError **error)
-+polkit_unix_process_get_pid (PolkitUnixProcess *process)
- {
-- gint result;
-- gchar *contents;
-- gchar **lines;
--#ifdef HAVE_FREEBSD
-- struct kinfo_proc p;
--#else
-- gchar filename[64];
-- guint n;
--#endif
--
- g_return_val_if_fail (POLKIT_IS_UNIX_PROCESS (process), 0);
-- g_return_val_if_fail (error == NULL || *error == NULL, 0);
--
-- result = 0;
-- lines = NULL;
-- contents = NULL;
--
--#ifdef HAVE_FREEBSD
-- if (get_kinfo_proc (process->pid, &p) == 0)
-- {
-- g_set_error (error,
-- POLKIT_ERROR,
-- POLKIT_ERROR_FAILED,
-- "get_kinfo_proc() failed for pid %d: %s",
-- process->pid,
-- g_strerror (errno));
-- goto out;
-- }
--
-- result = p.ki_uid;
--#else
--
-- /* see 'man proc' for layout of the status file
-- *
-- * Uid, Gid: Real, effective, saved set, and file system UIDs (GIDs).
-- */
-- g_snprintf (filename, sizeof filename, "/proc/%d/status", process->pid);
-- if (!g_file_get_contents (filename,
-- &contents,
-- NULL,
-- error))
-- {
-- goto out;
-- }
-- lines = g_strsplit (contents, "\n", -1);
-- for (n = 0; lines != NULL && lines[n] != NULL; n++)
-- {
-- gint real_uid, effective_uid;
-- if (!g_str_has_prefix (lines[n], "Uid:"))
-- continue;
-- if (sscanf (lines[n] + 4, "%d %d", &real_uid, &effective_uid) != 2)
-- {
-- g_set_error (error,
-- POLKIT_ERROR,
-- POLKIT_ERROR_FAILED,
-- "Unexpected line `%s' in file %s",
-- lines[n],
-- filename);
-- goto out;
-- }
-- else
-- {
-- result = real_uid;
-- goto out;
-- }
-- }
--
-- g_set_error (error,
-- POLKIT_ERROR,
-- POLKIT_ERROR_FAILED,
-- "Didn't find any line starting with `Uid:' in file %s",
-- filename);
--#endif
--
--out:
-- g_strfreev (lines);
-- g_free (contents);
-- return result;
-+ return process->pid;
- }
-
- /**
-@@ -311,6 +315,21 @@ polkit_unix_process_get_start_time (PolkitUnixProcess *process)
- }
-
- /**
-+ * polkit_unix_process_set_start_time:
-+ * @process: A #PolkitUnixProcess.
-+ * @start_time: The start time for @pid.
-+ *
-+ * Set the start time of @process.
-+ */
-+void
-+polkit_unix_process_set_start_time (PolkitUnixProcess *process,
-+ guint64 start_time)
-+{
-+ g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process));
-+ process->start_time = start_time;
-+}
-+
-+/**
- * polkit_unix_process_set_pid:
- * @process: A #PolkitUnixProcess.
- * @pid: A process id.
-@@ -323,18 +342,17 @@ polkit_unix_process_set_pid (PolkitUnixProcess *process,
- {
- g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process));
- process->pid = pid;
-- if (pid != (gint) -1)
-- process->start_time = get_start_time_for_pid (pid, NULL);
- }
-
- /**
- * polkit_unix_process_new:
- * @pid: The process id.
- *
-- * Creates a new #PolkitUnixProcess for @pid. The start time of the
-- * process will be looked up in using e.g. the
-- * <filename>/proc</filename> filesystem depending on the platform in
-- * use.
-+ * Creates a new #PolkitUnixProcess for @pid.
-+ *
-+ * The uid and start time of the process will be looked up in using
-+ * e.g. the <filename>/proc</filename> filesystem depending on the
-+ * platform in use.
- *
- * Returns: (transfer full): A #PolkitSubject. Free with g_object_unref().
- */
-@@ -353,22 +371,42 @@ polkit_unix_process_new (gint pid)
- *
- * Creates a new #PolkitUnixProcess object for @pid and @start_time.
- *
-+ * The uid of the process will be looked up in using e.g. the
-+ * <filename>/proc</filename> filesystem depending on the platform in
-+ * use.
-+ *
- * Returns: (transfer full): A #PolkitSubject. Free with g_object_unref().
- */
- PolkitSubject *
- polkit_unix_process_new_full (gint pid,
- guint64 start_time)
- {
-- PolkitUnixProcess *process;
--
-- process = POLKIT_UNIX_PROCESS (polkit_unix_process_new ((gint) -1));
-- process->pid = pid;
-- if (start_time != 0)
-- process->start_time = start_time;
-- else
-- process->start_time = get_start_time_for_pid (pid, NULL);
-+ return POLKIT_SUBJECT (g_object_new (POLKIT_TYPE_UNIX_PROCESS,
-+ "pid", pid,
-+ "start_time", start_time,
-+ NULL));
-+}
-
-- return POLKIT_SUBJECT (process);
-+/**
-+ * polkit_unix_process_new_for_owner:
-+ * @pid: The process id.
-+ * @start_time: The start time for @pid or 0 to look it up in e.g. <filename>/proc</filename>.
-+ * @uid: The (real, not effective) uid of the owner of @pid or -1 to look it up in e.g. <filename>/proc</filename>.
-+ *
-+ * Creates a new #PolkitUnixProcess object for @pid, @start_time and @uid.
-+ *
-+ * Returns: (transfer full): A #PolkitSubject. Free with g_object_unref().
-+ */
-+PolkitSubject *
-+polkit_unix_process_new_for_owner (gint pid,
-+ guint64 start_time,
-+ gint uid)
-+{
-+ return POLKIT_SUBJECT (g_object_new (POLKIT_TYPE_UNIX_PROCESS,
-+ "pid", pid,
-+ "start_time", start_time,
-+ "uid", uid,
-+ NULL));
- }
-
- static guint
-@@ -616,3 +654,95 @@ out:
-
- return start_time;
- }
-+
-+static gint
-+_polkit_unix_process_get_owner (PolkitUnixProcess *process,
-+ GError **error)
-+{
-+ gint result;
-+ gchar *contents;
-+ gchar **lines;
-+#ifdef HAVE_FREEBSD
-+ struct kinfo_proc p;
-+#else
-+ gchar filename[64];
-+ guint n;
-+#endif
-+
-+ g_return_val_if_fail (POLKIT_IS_UNIX_PROCESS (process), 0);
-+ g_return_val_if_fail (error == NULL || *error == NULL, 0);
-+
-+ result = 0;
-+ lines = NULL;
-+ contents = NULL;
-+
-+#ifdef HAVE_FREEBSD
-+ if (get_kinfo_proc (process->pid, &p) == 0)
-+ {
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "get_kinfo_proc() failed for pid %d: %s",
-+ process->pid,
-+ g_strerror (errno));
-+ goto out;
-+ }
-+
-+ result = p.ki_uid;
-+#else
-+
-+ /* see 'man proc' for layout of the status file
-+ *
-+ * Uid, Gid: Real, effective, saved set, and file system UIDs (GIDs).
-+ */
-+ g_snprintf (filename, sizeof filename, "/proc/%d/status", process->pid);
-+ if (!g_file_get_contents (filename,
-+ &contents,
-+ NULL,
-+ error))
-+ {
-+ goto out;
-+ }
-+ lines = g_strsplit (contents, "\n", -1);
-+ for (n = 0; lines != NULL && lines[n] != NULL; n++)
-+ {
-+ gint real_uid, effective_uid;
-+ if (!g_str_has_prefix (lines[n], "Uid:"))
-+ continue;
-+ if (sscanf (lines[n] + 4, "%d %d", &real_uid, &effective_uid) != 2)
-+ {
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Unexpected line `%s' in file %s",
-+ lines[n],
-+ filename);
-+ goto out;
-+ }
-+ else
-+ {
-+ result = real_uid;
-+ goto out;
-+ }
-+ }
-+
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Didn't find any line starting with `Uid:' in file %s",
-+ filename);
-+#endif
-+
-+out:
-+ g_strfreev (lines);
-+ g_free (contents);
-+ return result;
-+}
-+
-+/* deprecated public method */
-+gint
-+polkit_unix_process_get_owner (PolkitUnixProcess *process,
-+ GError **error)
-+{
-+ return _polkit_unix_process_get_owner (process, error);
-+}
-diff --git a/src/polkit/polkitunixprocess.h b/src/polkit/polkitunixprocess.h
-index b88cd03..531a57d 100644
---- a/src/polkit/polkitunixprocess.h
-+++ b/src/polkit/polkitunixprocess.h
-@@ -47,16 +47,24 @@ typedef struct _PolkitUnixProcess PolkitUnixProcess;
- typedef struct _PolkitUnixProcessClass PolkitUnixProcessClass;
-
- GType polkit_unix_process_get_type (void) G_GNUC_CONST;
--PolkitSubject *polkit_unix_process_new (gint pid);
--PolkitSubject *polkit_unix_process_new_full (gint pid,
-- guint64 start_time);
--
-+PolkitSubject *polkit_unix_process_new (gint pid);
-+PolkitSubject *polkit_unix_process_new_full (gint pid,
-+ guint64 start_time);
-+PolkitSubject *polkit_unix_process_new_for_owner (gint pid,
-+ guint64 start_time,
-+ gint uid);
- gint polkit_unix_process_get_pid (PolkitUnixProcess *process);
- guint64 polkit_unix_process_get_start_time (PolkitUnixProcess *process);
-+gint polkit_unix_process_get_uid (PolkitUnixProcess *process);
- void polkit_unix_process_set_pid (PolkitUnixProcess *process,
- gint pid);
-+void polkit_unix_process_set_uid (PolkitUnixProcess *process,
-+ gint uid);
-+void polkit_unix_process_set_start_time (PolkitUnixProcess *process,
-+ guint64 start_time);
-+
- gint polkit_unix_process_get_owner (PolkitUnixProcess *process,
-- GError **error);
-+ GError **error) G_GNUC_DEPRECATED_FOR (polkit_unix_process_get_uid);
-
- G_END_DECLS
-
---
-cgit v0.8.3-6-g21f6
-From c23d74447c7615dc74dae259f0fc3688ec988867 Mon Sep 17 00:00:00 2001
-From: David Zeuthen <davidz@redhat.com>
-Date: Fri, 01 Apr 2011 16:12:27 +0000
-Subject: Use polkit_unix_process_get_uid() to get the owner of a process
-
-This avoids a TOCTTOU problem.
-
-Signed-off-by: David Zeuthen <davidz@redhat.com>
----
-diff --git a/src/polkitbackend/polkitbackendsessionmonitor.c b/src/polkitbackend/polkitbackendsessionmonitor.c
-index 495f752..9c331b6 100644
---- a/src/polkitbackend/polkitbackendsessionmonitor.c
-+++ b/src/polkitbackend/polkitbackendsessionmonitor.c
-@@ -293,14 +293,15 @@ polkit_backend_session_monitor_get_user_for_subject (PolkitBackendSessionMonitor
-
- if (POLKIT_IS_UNIX_PROCESS (subject))
- {
-- local_error = NULL;
-- uid = polkit_unix_process_get_owner (POLKIT_UNIX_PROCESS (subject), &local_error);
-- if (local_error != NULL)
-+ uid = polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject));
-+ if ((gint) uid == -1)
- {
-- g_propagate_prefixed_error (error, local_error, "Error getting user for process: ");
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Unix process subject does not have uid set");
- goto out;
- }
--
- ret = polkit_unix_user_new (uid);
- }
- else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
---
-cgit v0.8.3-6-g21f6
-From 3b12cfac29dddd27f1f166a7574d8374cc1dccf2 Mon Sep 17 00:00:00 2001
-From: David Zeuthen <davidz@redhat.com>
-Date: Fri, 01 Apr 2011 16:13:15 +0000
-Subject: pkexec: Avoid TOCTTOU problems with parent process
-
-In a nutshell, the parent process may change its uid (either real- or
-effective uid) after launching pkexec. It can do this by exec()'ing
-e.g. a setuid root program.
-
-To avoid this problem, just use the uid the parent process had when it
-executed pkexec. This happens to be the same uid of the pkexec process
-itself.
-
-Additionally, remove some dubious code that allowed pkexec to continue
-when the parent process died as there is no reason to support
-something like that. Also ensure that the pkexec process is killed if
-the parent process dies.
-
-This problem was pointed out by Neel Mehta <nmehta@google.com>.
-
-Signed-off-by: David Zeuthen <davidz@redhat.com>
----
-diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c
-index 9217954..3e656be 100644
---- a/src/programs/pkexec.c
-+++ b/src/programs/pkexec.c
-@@ -35,6 +35,10 @@
- #include <pwd.h>
- #include <errno.h>
-
-+#ifdef __linux__
-+#include <sys/prctl.h>
-+#endif
-+
- #include <glib/gi18n.h>
-
- #ifdef POLKIT_AUTHFW_PAM
-@@ -423,7 +427,6 @@ main (int argc, char *argv[])
- GPtrArray *saved_env;
- gchar *opt_user;
- pid_t pid_of_caller;
-- uid_t uid_of_caller;
- gpointer local_agent_handle;
-
- ret = 127;
-@@ -598,40 +601,49 @@ main (int argc, char *argv[])
- */
- g_type_init ();
-
-- /* now check if the program that invoked us is authorized */
-+ /* make sure we are nuked if the parent process dies */
-+#ifdef __linux__
-+ if (prctl (PR_SET_PDEATHSIG, SIGTERM) != 0)
-+ {
-+ g_printerr ("prctl(PR_SET_PDEATHSIG, SIGTERM) failed: %s\n", g_strerror (errno));
-+ goto out;
-+ }
-+#else
-+#warning "Please add OS specific code to catch when the parent dies"
-+#endif
-+
-+ /* Figure out the parent process */
- pid_of_caller = getppid ();
- if (pid_of_caller == 1)
- {
- /* getppid() can return 1 if the parent died (meaning that we are reaped
-- * by /sbin/init); get process group leader instead - for example, this
-- * happens when launching via gnome-panel (alt+f2, then 'pkexec gedit').
-+ * by /sbin/init); In that case we simpy bail.
- */
-- pid_of_caller = getpgrp ();
-- }
--
-- subject = polkit_unix_process_new (pid_of_caller);
-- if (subject == NULL)
-- {
-- g_printerr ("No such process for pid %d: %s\n", (gint) pid_of_caller, error->message);
-- g_error_free (error);
-+ g_printerr ("Refusing to render service to dead parents.\n");
- goto out;
- }
-
-- /* paranoia: check that the uid of pid_of_caller matches getuid() */
-- error = NULL;
-- uid_of_caller = polkit_unix_process_get_owner (POLKIT_UNIX_PROCESS (subject),
-- &error);
-- if (error != NULL)
-- {
-- g_printerr ("Error determing pid of caller (pid %d): %s\n", (gint) pid_of_caller, error->message);
-- g_error_free (error);
-- goto out;
-- }
-- if (uid_of_caller != getuid ())
-- {
-- g_printerr ("User of caller (%d) does not match our uid (%d)\n", uid_of_caller, getuid ());
-- goto out;
-- }
-+ /* This process we want to check an authorization for is the process
-+ * that launched us - our parent process.
-+ *
-+ * At the time the parent process fork()'ed and exec()'ed us, the
-+ * process had the same real-uid that we have now. So we use this
-+ * real-uid instead of of looking it up to avoid TOCTTOU issues
-+ * (consider the parent process exec()'ing a setuid helper).
-+ *
-+ * On the other hand, the monotonic process start-time is guaranteed
-+ * to never change so it's safe to look that up given only the PID
-+ * since we are guaranteed to be nuked if the parent goes away
-+ * (cf. the prctl(2) call above).
-+ */
-+ subject = polkit_unix_process_new_for_owner (pid_of_caller,
-+ 0, /* 0 means "look up start-time in /proc" */
-+ getuid ());
-+ /* really double-check the invariants guaranteed by the PolkitUnixProcess class */
-+ g_assert (subject != NULL);
-+ g_assert (polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject)) == pid_of_caller);
-+ g_assert (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0);
-+ g_assert (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0);
-
- error = NULL;
- authority = polkit_authority_get_sync (NULL /* GCancellable* */, &error);
---
-cgit v0.8.3-6-g21f6
diff --git a/abs/extra/polkit/PKGBUILD b/abs/extra/polkit/PKGBUILD
index 3a55ddc..e86dbbc 100644
--- a/abs/extra/polkit/PKGBUILD
+++ b/abs/extra/polkit/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id$
+# $Id: PKGBUILD 158972 2012-05-13 21:06:37Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=polkit
-pkgver=0.101
-pkgrel=2
+pkgver=0.105
+pkgrel=1
pkgdesc="Application development toolkit for controlling system-wide privileges"
arch=(i686 x86_64)
license=('LGPL')
@@ -12,21 +12,22 @@ depends=('glib2' 'pam' 'expat')
makedepends=('intltool' 'gtk-doc' 'gobject-introspection')
replaces=('policykit')
options=('!libtool')
-source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz
- CVE-2011-1485.patch
+source=(http://www.freedesktop.org/software/polkit/releases/$pkgname-$pkgver.tar.gz
polkit.pam)
-md5sums=('f925ac93aba3c072977370c1e27feb7f'
- '4d858b8ab602614d7db2bc8574f6fd29'
+md5sums=('9c29e1b6c214f0bd6f1d4ee303dfaed9'
'6564f95878297b954f0572bc1610dd15')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i "${srcdir}/CVE-2011-1485.patch"
+ cd $pkgname-$pkgver
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --libexecdir=/usr/lib/polkit-1 \
--disable-static --enable-gtk-doc
make
- make DESTDIR="${pkgdir}" install
+}
+
+package() {
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
- install -m644 "${srcdir}/polkit.pam" "${pkgdir}/etc/pam.d/polkit-1"
+ install -m644 "$srcdir/polkit.pam" "$pkgdir/etc/pam.d/polkit-1"
}
diff --git a/abs/extra/polkit/systemd-fallback.patch b/abs/extra/polkit/systemd-fallback.patch
new file mode 100644
index 0000000..f89ce10
--- /dev/null
+++ b/abs/extra/polkit/systemd-fallback.patch
@@ -0,0 +1,1571 @@
+diff -u -rN polkit-0.104/configure.ac polkit-0.104-systemd-fallback/configure.ac
+--- polkit-0.104/configure.ac 2012-01-03 17:25:49.000000000 +0100
++++ polkit-0.104-systemd-fallback/configure.ac 2012-03-06 15:45:55.275860194 +0100
+@@ -160,14 +160,14 @@
+ [enable_systemd=auto])
+ if test "$enable_systemd" != "no"; then
+ PKG_CHECK_MODULES(SYSTEMD,
+- [libsystemd-login],
++ [libsystemd-login libsystemd-daemon],
+ have_systemd=yes,
+ have_systemd=no)
+ if test "$have_systemd" = "yes"; then
+ SESSION_TRACKING=systemd
+ else
+ if test "$enable_systemd" = "yes"; then
+- AC_MSG_ERROR([systemd support requested but libsystemd-login1 library not found])
++ AC_MSG_ERROR([systemd support requested but systemd libraries not found])
+ fi
+ fi
+ fi
+diff -u -rN polkit-0.104/src/polkit/Makefile.am polkit-0.104-systemd-fallback/src/polkit/Makefile.am
+--- polkit-0.104/src/polkit/Makefile.am 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkit/Makefile.am 2012-03-06 15:19:25.108853325 +0100
+@@ -79,15 +79,8 @@
+ polkitimplicitauthorization.c polkitimplicitauthorization.h \
+ polkittemporaryauthorization.c polkittemporaryauthorization.h \
+ polkitpermission.c polkitpermission.h \
+- $(NULL)
+-
+-if HAVE_SYSTEMD
+-libpolkit_gobject_1_la_SOURCES += \
+- polkitunixsession-systemd.c polkitunixsession.h
+-else
+-libpolkit_gobject_1_la_SOURCES += \
+ polkitunixsession.c polkitunixsession.h
+-endif
++ $(NULL)
+
+ libpolkit_gobject_1_la_CFLAGS = \
+ -D_POLKIT_COMPILATION \
+diff -u -rN polkit-0.104/src/polkit/polkitunixsession.c polkit-0.104-systemd-fallback/src/polkit/polkitunixsession.c
+--- polkit-0.104/src/polkit/polkitunixsession.c 2011-10-18 19:02:27.000000000 +0200
++++ polkit-0.104-systemd-fallback/src/polkit/polkitunixsession.c 2012-03-06 15:17:29.829788021 +0100
+@@ -23,12 +23,18 @@
+ # include "config.h"
+ #endif
+
++#include <stdlib.h>
+ #include <string.h>
+ #include "polkitunixsession.h"
+ #include "polkitsubject.h"
+ #include "polkiterror.h"
+ #include "polkitprivate.h"
+
++#ifdef HAVE_SYSTEMD
++# include <systemd/sd-daemon.h>
++# include <systemd/sd-login.h>
++#endif
++
+ /**
+ * SECTION:polkitunixsession
+ * @title: PolkitUnixSession
+@@ -364,34 +370,44 @@
+ PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+ GDBusConnection *connection;
+ GVariant *result;
+- gboolean ret;
+-
+- ret = FALSE;
++ gboolean ret = FALSE;
+
+- connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
+- if (connection == NULL)
+- goto out;
+-
+- result = g_dbus_connection_call_sync (connection,
+- "org.freedesktop.ConsoleKit", /* name */
+- session->session_id, /* object path */
+- "org.freedesktop.ConsoleKit.Session", /* interface name */
+- "GetUser", /* method */
+- NULL, /* parameters */
+- G_VARIANT_TYPE ("(u)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1,
+- cancellable,
+- error);
+- if (result == NULL)
+- goto out;
++#ifdef HAVE_SYSTEMD
++ uid_t uid;
++
++ if (sd_booted () > 0)
++ {
++ if (sd_session_get_uid (session->session_id, &uid) == 0)
++ ret = TRUE;
++ }
++ else
++#endif
++ {
++ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
++ if (connection == NULL)
++ goto out;
++
++ result = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit", /* name */
++ session->session_id, /* object path */
++ "org.freedesktop.ConsoleKit.Session", /* interface name */
++ "GetUser", /* method */
++ NULL, /* parameters */
++ G_VARIANT_TYPE ("(u)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ cancellable,
++ error);
++ if (result == NULL)
++ goto out;
+
+- ret = TRUE;
+- g_variant_unref (result);
++ ret = TRUE;
++ g_variant_unref (result);
+
+- out:
+- if (connection != NULL)
+- g_object_unref (connection);
++ out:
++ if (connection != NULL)
++ g_object_unref (connection);
++ }
+ return ret;
+ }
+
+@@ -470,12 +486,9 @@
+ GError **error)
+ {
+ PolkitUnixSession *session = POLKIT_UNIX_SESSION (initable);
+- GDBusConnection *connection;
++ GDBusConnection *connection = NULL;
+ GVariant *result;
+- gboolean ret;
+-
+- connection = NULL;
+- ret = FALSE;
++ gboolean ret = FALSE;
+
+ if (session->session_id != NULL)
+ {
+@@ -484,33 +497,56 @@
+ goto out;
+ }
+
+- connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
+- if (connection == NULL)
+- goto out;
++#ifdef HAVE_SYSTEMD
++ char *s;
++
++ if (sd_booted () > 0)
++ {
++ if (sd_pid_get_session (session->pid, &s) == 0)
++ {
++ session->session_id = g_strdup (s);
++ free (s);
++ ret = TRUE;
++ goto out;
++ }
++
++ g_set_error (error,
++ POLKIT_ERROR,
++ POLKIT_ERROR_FAILED,
++ "No session for pid %d",
++ (gint) session->pid);
++ }
++ else
++#endif
++ {
++ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
++ if (connection == NULL)
++ goto out;
++
++ result = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit", /* name */
++ "/org/freedesktop/ConsoleKit/Manager", /* object path */
++ "org.freedesktop.ConsoleKit.Manager", /* interface name */
++ "GetSessionForUnixProcess", /* method */
++ g_variant_new ("(u)", session->pid), /* parameters */
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ cancellable,
++ error);
++ if (result == NULL)
++ goto out;
+
+- result = g_dbus_connection_call_sync (connection,
+- "org.freedesktop.ConsoleKit", /* name */
+- "/org/freedesktop/ConsoleKit/Manager", /* object path */
+- "org.freedesktop.ConsoleKit.Manager", /* interface name */
+- "GetSessionForUnixProcess", /* method */
+- g_variant_new ("(u)", session->pid), /* parameters */
+- G_VARIANT_TYPE ("(o)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1,
+- cancellable,
+- error);
+- if (result == NULL)
+- goto out;
++ g_variant_get (result, "(o)", &session->session_id);
++ g_variant_unref (result);
+
+- g_variant_get (result, "(o)", &session->session_id);
+- g_variant_unref (result);
++ ret = TRUE;
++ }
+
+- ret = TRUE;
+
+ out:
+ if (connection != NULL)
+ g_object_unref (connection);
+-
+ return ret;
+ }
+
+diff -u -rN polkit-0.104/src/polkit/polkitunixsession-systemd.c polkit-0.104-systemd-fallback/src/polkit/polkitunixsession-systemd.c
+--- polkit-0.104/src/polkit/polkitunixsession-systemd.c 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkit/polkitunixsession-systemd.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,481 +0,0 @@
+-/*
+- * Copyright (C) 2011 Red Hat, Inc.
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General
+- * Public License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+- * Boston, MA 02111-1307, USA.
+- *
+- * Author: Matthias Clasen
+- */
+-
+-#ifdef HAVE_CONFIG_H
+-# include "config.h"
+-#endif
+-
+-#include <string.h>
+-#include "polkitunixsession.h"
+-#include "polkitsubject.h"
+-#include "polkiterror.h"
+-#include "polkitprivate.h"
+-
+-#include <systemd/sd-login.h>
+-
+-/**
+- * SECTION:polkitunixsession
+- * @title: PolkitUnixSession
+- * @short_description: Unix sessions
+- *
+- * An object that represents an user session.
+- *
+- * The session id is an opaque string obtained from ConsoleKit.
+- */
+-
+-/**
+- * PolkitUnixSession:
+- *
+- * The #PolkitUnixSession struct should not be accessed directly.
+- */
+-struct _PolkitUnixSession
+-{
+- GObject parent_instance;
+-
+- gchar *session_id;
+-
+- gint pid;
+-};
+-
+-struct _PolkitUnixSessionClass
+-{
+- GObjectClass parent_class;
+-};
+-
+-enum
+-{
+- PROP_0,
+- PROP_SESSION_ID,
+- PROP_PID,
+-};
+-
+-static void subject_iface_init (PolkitSubjectIface *subject_iface);
+-static void initable_iface_init (GInitableIface *initable_iface);
+-static void async_initable_iface_init (GAsyncInitableIface *async_initable_iface);
+-
+-G_DEFINE_TYPE_WITH_CODE (PolkitUnixSession, polkit_unix_session, G_TYPE_OBJECT,
+- G_IMPLEMENT_INTERFACE (POLKIT_TYPE_SUBJECT, subject_iface_init)
+- G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
+- G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
+- );
+-
+-static void
+-polkit_unix_session_init (PolkitUnixSession *session)
+-{
+-}
+-
+-static void
+-polkit_unix_session_finalize (GObject *object)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (object);
+-
+- g_free (session->session_id);
+-
+- if (G_OBJECT_CLASS (polkit_unix_session_parent_class)->finalize != NULL)
+- G_OBJECT_CLASS (polkit_unix_session_parent_class)->finalize (object);
+-}
+-
+-static void
+-polkit_unix_session_get_property (GObject *object,
+- guint prop_id,
+- GValue *value,
+- GParamSpec *pspec)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (object);
+-
+- switch (prop_id)
+- {
+- case PROP_SESSION_ID:
+- g_value_set_string (value, session->session_id);
+- break;
+-
+- default:
+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+- break;
+- }
+-}
+-
+-static void
+-polkit_unix_session_set_property (GObject *object,
+- guint prop_id,
+- const GValue *value,
+- GParamSpec *pspec)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (object);
+-
+- switch (prop_id)
+- {
+- case PROP_SESSION_ID:
+- polkit_unix_session_set_session_id (session, g_value_get_string (value));
+- break;
+-
+- case PROP_PID:
+- session->pid = g_value_get_int (value);
+- break;
+-
+- default:
+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+- break;
+- }
+-}
+-
+-static void
+-polkit_unix_session_class_init (PolkitUnixSessionClass *klass)
+-{
+- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+-
+- gobject_class->finalize = polkit_unix_session_finalize;
+- gobject_class->get_property = polkit_unix_session_get_property;
+- gobject_class->set_property = polkit_unix_session_set_property;
+-
+- /**
+- * PolkitUnixSession:session-id:
+- *
+- * The UNIX session id.
+- */
+- g_object_class_install_property (gobject_class,
+- PROP_SESSION_ID,
+- g_param_spec_string ("session-id",
+- "Session ID",
+- "The UNIX session ID",
+- NULL,
+- G_PARAM_CONSTRUCT |
+- G_PARAM_READWRITE |
+- G_PARAM_STATIC_NAME |
+- G_PARAM_STATIC_BLURB |
+- G_PARAM_STATIC_NICK));
+-
+-
+- /**
+- * PolkitUnixSession:pid:
+- *
+- * The UNIX process id to look up the session.
+- */
+- g_object_class_install_property (gobject_class,
+- PROP_PID,
+- g_param_spec_int ("pid",
+- "Process ID",
+- "Process ID to use for looking up the session",
+- 0,
+- G_MAXINT,
+- 0,
+- G_PARAM_CONSTRUCT_ONLY |
+- G_PARAM_WRITABLE |
+- G_PARAM_STATIC_NAME |
+- G_PARAM_STATIC_BLURB |
+- G_PARAM_STATIC_NICK));
+-
+-}
+-
+-/**
+- * polkit_unix_session_get_session_id:
+- * @session: A #PolkitUnixSession.
+- *
+- * Gets the session id for @session.
+- *
+- * Returns: The session id for @session. Do not free this string, it
+- * is owned by @session.
+- **/
+-const gchar *
+-polkit_unix_session_get_session_id (PolkitUnixSession *session)
+-{
+- g_return_val_if_fail (POLKIT_IS_UNIX_SESSION (session), NULL);
+- return session->session_id;
+-}
+-
+-/**
+- * polkit_unix_session_set_session_id:
+- * @session: A #PolkitUnixSession.
+- * @session_id: The session id.
+- *
+- * Sets the session id for @session to @session_id.
+- **/
+-void
+-polkit_unix_session_set_session_id (PolkitUnixSession *session,
+- const gchar *session_id)
+-{
+- g_return_if_fail (POLKIT_IS_UNIX_SESSION (session));
+- /*g_return_if_fail (session_id != NULL);*/
+- g_free (session->session_id);
+- session->session_id = g_strdup (session_id);
+-}
+-
+-/**
+- * polkit_unix_session_new:
+- * @session_id: The session id.
+- *
+- * Creates a new #PolkitUnixSession for @session_id.
+- *
+- * Returns: (transfer full): A #PolkitUnixSession. Free with g_object_unref().
+- **/
+-PolkitSubject *
+-polkit_unix_session_new (const gchar *session_id)
+-{
+- return POLKIT_SUBJECT (g_object_new (POLKIT_TYPE_UNIX_SESSION,
+- "session-id", session_id,
+- NULL));
+-}
+-
+-/**
+- * polkit_unix_session_new_for_process:
+- * @pid: The process id of the process to get the session for.
+- * @cancellable: (allow-none): A #GCancellable or %NULL.
+- * @callback: A #GAsyncReadyCallback to call when the request is satisfied
+- * @user_data: The data to pass to @callback.
+- *
+- * Asynchronously creates a new #PolkitUnixSession object for the
+- * process with process id @pid.
+- *
+- * When the operation is finished, @callback will be invoked in the
+- * <link linkend="g-main-context-push-thread-default">thread-default
+- * main loop</link> of the thread you are calling this method
+- * from. You can then call
+- * polkit_unix_session_new_for_process_finish() to get the result of
+- * the operation.
+- *
+- * This method constructs the object asynchronously, for the synchronous and blocking version
+- * use polkit_unix_session_new_for_process_sync().
+- **/
+-void
+-polkit_unix_session_new_for_process (gint pid,
+- GCancellable *cancellable,
+- GAsyncReadyCallback callback,
+- gpointer user_data)
+-{
+- g_async_initable_new_async (POLKIT_TYPE_UNIX_SESSION,
+- G_PRIORITY_DEFAULT,
+- cancellable,
+- callback,
+- user_data,
+- "pid", pid,
+- NULL);
+-}
+-
+-/**
+- * polkit_unix_session_new_for_process_finish:
+- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to polkit_unix_session_new_for_process().
+- * @error: (allow-none): Return location for error.
+- *
+- * Finishes constructing a #PolkitSubject for a process id.
+- *
+- * Returns: (transfer full) (allow-none): A #PolkitUnixSession for the @pid passed to
+- * polkit_unix_session_new_for_process() or %NULL if @error is
+- * set. Free with g_object_unref().
+- **/
+-PolkitSubject *
+-polkit_unix_session_new_for_process_finish (GAsyncResult *res,
+- GError **error)
+-{
+- GObject *object;
+- GObject *source_object;
+-
+- source_object = g_async_result_get_source_object (res);
+- g_assert (source_object != NULL);
+-
+- object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+- res,
+- error);
+- g_object_unref (source_object);
+-
+- if (object != NULL)
+- return POLKIT_SUBJECT (object);
+- else
+- return NULL;
+-}
+-
+-
+-/**
+- * polkit_unix_session_new_for_process_sync:
+- * @pid: The process id of the process to get the session for.
+- * @cancellable: (allow-none): A #GCancellable or %NULL.
+- * @error: (allow-none): Return location for error.
+- *
+- * Creates a new #PolkitUnixSession for the process with process id @pid.
+- *
+- * This is a synchronous call - the calling thread is blocked until a
+- * reply is received. For the asynchronous version, see
+- * polkit_unix_session_new_for_process().
+- *
+- * Returns: (allow-none) (transfer full): A #PolkitUnixSession for
+- * @pid or %NULL if @error is set. Free with g_object_unref().
+- **/
+-PolkitSubject *
+-polkit_unix_session_new_for_process_sync (gint pid,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- return POLKIT_SUBJECT (g_initable_new (POLKIT_TYPE_UNIX_SESSION,
+- cancellable,
+- error,
+- "pid", pid,
+- NULL));
+-}
+-
+-static guint
+-polkit_unix_session_hash (PolkitSubject *subject)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+-
+- return g_str_hash (session->session_id);
+-}
+-
+-static gboolean
+-polkit_unix_session_equal (PolkitSubject *a,
+- PolkitSubject *b)
+-{
+- PolkitUnixSession *session_a;
+- PolkitUnixSession *session_b;
+-
+- session_a = POLKIT_UNIX_SESSION (a);
+- session_b = POLKIT_UNIX_SESSION (b);
+-
+- return g_strcmp0 (session_a->session_id, session_b->session_id) == 0;
+-}
+-
+-static gchar *
+-polkit_unix_session_to_string (PolkitSubject *subject)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+-
+- return g_strdup_printf ("unix-session:%s", session->session_id);
+-}
+-
+-static gboolean
+-polkit_unix_session_exists_sync (PolkitSubject *subject,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+- gboolean ret;
+- uid_t uid;
+-
+- ret = FALSE;
+-
+- if (!sd_session_get_uid (session->session_id, &uid))
+- ret = FALSE;
+-
+- return ret;
+-}
+-
+-static void
+-exists_in_thread_func (GSimpleAsyncResult *res,
+- GObject *object,
+- GCancellable *cancellable)
+-{
+- GError *error;
+- error = NULL;
+- if (!polkit_unix_session_exists_sync (POLKIT_SUBJECT (object),
+- cancellable,
+- &error))
+- {
+- g_simple_async_result_set_from_error (res, error);
+- g_error_free (error);
+- }
+-}
+-
+-static void
+-polkit_unix_session_exists (PolkitSubject *subject,
+- GCancellable *cancellable,
+- GAsyncReadyCallback callback,
+- gpointer user_data)
+-{
+- GSimpleAsyncResult *simple;
+-
+- g_return_if_fail (POLKIT_IS_UNIX_SESSION (subject));
+-
+- simple = g_simple_async_result_new (G_OBJECT (subject),
+- callback,
+- user_data,
+- polkit_unix_session_exists);
+- g_simple_async_result_run_in_thread (simple,
+- exists_in_thread_func,
+- G_PRIORITY_DEFAULT,
+- cancellable);
+- g_object_unref (simple);
+-}
+-
+-static gboolean
+-polkit_unix_session_exists_finish (PolkitSubject *subject,
+- GAsyncResult *res,
+- GError **error)
+-{
+- GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
+- gboolean ret;
+-
+- g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == polkit_unix_session_exists);
+-
+- ret = FALSE;
+-
+- if (g_simple_async_result_propagate_error (simple, error))
+- goto out;
+-
+- ret = g_simple_async_result_get_op_res_gboolean (simple);
+-
+- out:
+- return ret;
+-}
+-
+-static void
+-subject_iface_init (PolkitSubjectIface *subject_iface)
+-{
+- subject_iface->hash = polkit_unix_session_hash;
+- subject_iface->equal = polkit_unix_session_equal;
+- subject_iface->to_string = polkit_unix_session_to_string;
+- subject_iface->exists = polkit_unix_session_exists;
+- subject_iface->exists_finish = polkit_unix_session_exists_finish;
+- subject_iface->exists_sync = polkit_unix_session_exists_sync;
+-}
+-
+-static gboolean
+-polkit_unix_session_initable_init (GInitable *initable,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (initable);
+- gboolean ret;
+-
+- ret = FALSE;
+-
+- if (session->session_id != NULL)
+- {
+- /* already set, nothing to do */
+- ret = TRUE;
+- goto out;
+- }
+-
+- if (!sd_pid_get_session (session->pid, &session->session_id))
+- ret = TRUE;
+-
+-out:
+- return ret;
+-}
+-
+-static void
+-initable_iface_init (GInitableIface *initable_iface)
+-{
+- initable_iface->init = polkit_unix_session_initable_init;
+-}
+-
+-static void
+-async_initable_iface_init (GAsyncInitableIface *async_initable_iface)
+-{
+- /* use default implementation to run GInitable code in a thread */
+-}
+diff -u -rN polkit-0.104/src/polkitbackend/Makefile.am polkit-0.104-systemd-fallback/src/polkitbackend/Makefile.am
+--- polkit-0.104/src/polkitbackend/Makefile.am 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkitbackend/Makefile.am 2012-03-06 15:44:15.380014886 +0100
+@@ -41,15 +41,8 @@
+ polkitbackendconfigsource.h polkitbackendconfigsource.c \
+ polkitbackendactionlookup.h polkitbackendactionlookup.c \
+ polkitbackendlocalauthorizationstore.h polkitbackendlocalauthorizationstore.c \
+- $(NULL)
+-
+-if HAVE_SYSTEMD
+-libpolkit_backend_1_la_SOURCES += \
+- polkitbackendsessionmonitor.h polkitbackendsessionmonitor-systemd.c
+-else
+-libpolkit_backend_1_la_SOURCES += \
+ polkitbackendsessionmonitor.h polkitbackendsessionmonitor.c
+-endif
++ $(NULL)
+
+ libpolkit_backend_1_la_CFLAGS = \
+ -D_POLKIT_COMPILATION \
+diff -u -rN polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor.c polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor.c
+--- polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor.c 2011-10-18 19:02:27.000000000 +0200
++++ polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor.c 2012-03-06 15:43:49.353562242 +0100
+@@ -26,6 +26,12 @@
+ #include <string.h>
+ #include <glib/gstdio.h>
+
++#ifdef HAVE_SYSTEMD
++# include <systemd/sd-daemon.h>
++# include <systemd/sd-login.h>
++# include <stdlib.h>
++#endif
++
+ #include <polkit/polkit.h>
+ #include "polkitbackendsessionmonitor.h"
+
+@@ -39,6 +45,88 @@
+ * The #PolkitBackendSessionMonitor class is a utility class to track and monitor sessions.
+ */
+
++#ifdef HAVE_SYSTEMD
++typedef struct
++{
++ GSource source;
++ GPollFD pollfd;
++ sd_login_monitor *monitor;
++} SdSource;
++
++static gboolean
++sd_source_prepare (GSource *source,
++ gint *timeout)
++{
++ *timeout = -1;
++ return FALSE;
++}
++
++static gboolean
++sd_source_check (GSource *source)
++{
++ SdSource *sd_source = (SdSource *)source;
++
++ return sd_source->pollfd.revents != 0;
++}
++
++static gboolean
++sd_source_dispatch (GSource *source,
++ GSourceFunc callback,
++ gpointer user_data)
++
++{
++ SdSource *sd_source = (SdSource *)source;
++ gboolean ret;
++
++ g_warn_if_fail (callback != NULL);
++
++ ret = (*callback) (user_data);
++
++ sd_login_monitor_flush (sd_source->monitor);
++
++ return ret;
++}
++
++static void
++sd_source_finalize (GSource *source)
++{
++ SdSource *sd_source = (SdSource*)source;
++
++ sd_login_monitor_unref (sd_source->monitor);
++}
++
++static GSourceFuncs sd_source_funcs = {
++ sd_source_prepare,
++ sd_source_check,
++ sd_source_dispatch,
++ sd_source_finalize
++};
++
++static GSource *
++sd_source_new (void)
++{
++ GSource *source;
++ SdSource *sd_source;
++ int ret;
++
++ source = g_source_new (&sd_source_funcs, sizeof (SdSource));
++ sd_source = (SdSource *)source;
++
++ if ((ret = sd_login_monitor_new (NULL, &sd_source->monitor)) < 0)
++ {
++ g_printerr ("Error getting login monitor: %d", ret);
++ }
++ else
++ {
++ sd_source->pollfd.fd = sd_login_monitor_get_fd (sd_source->monitor);
++ sd_source->pollfd.events = G_IO_IN;
++ g_source_add_poll (source, &sd_source->pollfd);
++ }
++
++ return source;
++}
++#endif /* HAVE_SYSTEMD */
++
+ struct _PolkitBackendSessionMonitor
+ {
+ GObject parent_instance;
+@@ -48,6 +136,10 @@
+ GKeyFile *database;
+ GFileMonitor *database_monitor;
+ time_t database_mtime;
++
++#ifdef HAVE_SYSTEMD
++ GSource *sd_source;
++#endif
+ };
+
+ struct _PolkitBackendSessionMonitorClass
+@@ -162,6 +254,18 @@
+ g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
+ }
+
++#ifdef HAVE_SYSTEMD
++static gboolean
++sessions_changed (gpointer user_data)
++{
++ PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (user_data);
++
++ g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
++
++ return TRUE;
++}
++#endif
++
+ static void
+ polkit_backend_session_monitor_init (PolkitBackendSessionMonitor *monitor)
+ {
+@@ -176,31 +280,47 @@
+ g_error_free (error);
+ }
+
+- error = NULL;
+- if (!ensure_database (monitor, &error))
+- {
+- g_printerr ("Error loading " CKDB_PATH ": %s", error->message);
+- g_error_free (error);
+- }
++#ifdef HAVE_SYSTEMD
++ monitor->sd_source = NULL;
++
++ if (sd_booted () > 0)
++ {
++ monitor->sd_source = sd_source_new ();
++ g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL);
++ g_source_attach (monitor->sd_source, NULL);
+
+- error = NULL;
+- file = g_file_new_for_path (CKDB_PATH);
+- monitor->database_monitor = g_file_monitor_file (file,
+- G_FILE_MONITOR_NONE,
+- NULL,
+- &error);
+- g_object_unref (file);
+- if (monitor->database_monitor == NULL)
+- {
+- g_printerr ("Error monitoring " CKDB_PATH ": %s", error->message);
+- g_error_free (error);
++ monitor->database = NULL;
++ monitor->database_monitor = NULL;
+ }
+ else
++#endif
+ {
+- g_signal_connect (monitor->database_monitor,
+- "changed",
+- G_CALLBACK (on_file_monitor_changed),
+- monitor);
++ error = NULL;
++ if (!ensure_database (monitor, &error))
++ {
++ g_printerr ("Error loading " CKDB_PATH ": %s", error->message);
++ g_error_free (error);
++ }
++
++ error = NULL;
++ file = g_file_new_for_path (CKDB_PATH);
++ monitor->database_monitor = g_file_monitor_file (file,
++ G_FILE_MONITOR_NONE,
++ NULL,
++ &error);
++ g_object_unref (file);
++ if (monitor->database_monitor == NULL)
++ {
++ g_printerr ("Error monitoring " CKDB_PATH ": %s", error->message);
++ g_error_free (error);
++ }
++ else
++ {
++ g_signal_connect (monitor->database_monitor,
++ "changed",
++ G_CALLBACK (on_file_monitor_changed),
++ monitor);
++ }
+ }
+ }
+
+@@ -212,6 +332,14 @@
+ if (monitor->system_bus != NULL)
+ g_object_unref (monitor->system_bus);
+
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ g_source_destroy (monitor->sd_source);
++ g_source_unref (monitor->sd_source);
++ }
++#endif
++
+ if (monitor->database_monitor != NULL)
+ g_object_unref (monitor->database_monitor);
+
+@@ -328,22 +456,38 @@
+ }
+ else if (POLKIT_IS_UNIX_SESSION (subject))
+ {
+- if (!ensure_database (monitor, error))
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
+ {
+- g_prefix_error (error, "Error getting user for session: Error ensuring CK database at " CKDB_PATH ": ");
+- goto out;
++ if (sd_session_get_uid (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)), &uid) < 0)
++ {
++ g_set_error (error,
++ POLKIT_ERROR,
++ POLKIT_ERROR_FAILED,
++ "Error getting uid for session");
++ goto out;
++ }
+ }
+-
+- group = g_strdup_printf ("Session %s", polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)));
+- local_error = NULL;
+- uid = g_key_file_get_integer (monitor->database, group, "uid", &local_error);
+- if (local_error != NULL)
++ else
++#endif
+ {
+- g_propagate_prefixed_error (error, local_error, "Error getting uid using " CKDB_PATH ": ");
++ if (!ensure_database (monitor, error))
++ {
++ g_prefix_error (error, "Error getting user for session: Error ensuring CK database at " CKDB_PATH ": ");
++ goto out;
++ }
++
++ group = g_strdup_printf ("Session %s", polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)));
++ local_error = NULL;
++ uid = g_key_file_get_integer (monitor->database, group, "uid", &local_error);
++ if (local_error != NULL)
++ {
++ g_propagate_prefixed_error (error, local_error, "Error getting uid using " CKDB_PATH ": ");
++ g_free (group);
++ goto out;
++ }
+ g_free (group);
+- goto out;
+ }
+- g_free (group);
+
+ ret = polkit_unix_user_new (uid);
+ }
+@@ -373,29 +517,46 @@
+
+ if (POLKIT_IS_UNIX_PROCESS (subject))
+ {
+- const gchar *session_id;
+- GVariant *result;
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.ConsoleKit",
+- "/org/freedesktop/ConsoleKit/Manager",
+- "org.freedesktop.ConsoleKit.Manager",
+- "GetSessionForUnixProcess",
+- g_variant_new ("(u)", polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject))),
+- G_VARIANT_TYPE ("(o)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(&o)", &session_id);
+- session = polkit_unix_session_new (session_id);
+- g_variant_unref (result);
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ gchar *session_id;
++ pid_t pid;
++
++ pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
++ if (sd_pid_get_session (pid, &session_id) < 0)
++ goto out;
++
++ session = polkit_unix_session_new (session_id);
++ free (session_id);
++ }
++ else
++#endif
++ {
++ const gchar *session_id;
++ GVariant *result;
++ result = g_dbus_connection_call_sync (monitor->system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "GetSessionForUnixProcess",
++ g_variant_new ("(u)", polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject))),
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1, /* timeout_msec */
++ NULL, /* GCancellable */
++ error);
++ if (result == NULL)
++ goto out;
++ g_variant_get (result, "(&o)", &session_id);
++ session = polkit_unix_session_new (session_id);
++ g_variant_unref (result);
++ }
+ }
+ else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
+ {
+ guint32 pid;
+- const gchar *session_id;
++ gchar *session_id;
+ GVariant *result;
+
+ result = g_dbus_connection_call_sync (monitor->system_bus,
+@@ -414,22 +575,35 @@
+ g_variant_get (result, "(u)", &pid);
+ g_variant_unref (result);
+
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.ConsoleKit",
+- "/org/freedesktop/ConsoleKit/Manager",
+- "org.freedesktop.ConsoleKit.Manager",
+- "GetSessionForUnixProcess",
+- g_variant_new ("(u)", pid),
+- G_VARIANT_TYPE ("(o)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(&o)", &session_id);
+- session = polkit_unix_session_new (session_id);
+- g_variant_unref (result);
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ if (sd_pid_get_session (pid, &session_id) < 0)
++ goto out;
++
++ session = polkit_unix_session_new (session_id);
++ free (session_id);
++ }
++ else
++#endif
++ {
++ result = g_dbus_connection_call_sync (monitor->system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "GetSessionForUnixProcess",
++ g_variant_new ("(u)", pid),
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1, /* timeout_msec */
++ NULL, /* GCancellable */
++ error);
++ if (result == NULL)
++ goto out;
++ g_variant_get (result, "(&o)", &session_id);
++ session = polkit_unix_session_new (session_id);
++ g_variant_unref (result);
++ }
+ }
+ else
+ {
+@@ -490,7 +664,22 @@
+ polkit_backend_session_monitor_is_session_local (PolkitBackendSessionMonitor *monitor,
+ PolkitSubject *session)
+ {
+- return get_boolean (monitor, session, "is_local");
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ char *seat;
++
++ if (!sd_session_get_seat (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)), &seat))
++ {
++ free (seat);
++ return TRUE;
++ }
++
++ return FALSE;
++ }
++ else
++#endif
++ return get_boolean (monitor, session, "is_local");
+ }
+
+
+@@ -498,6 +687,11 @@
+ polkit_backend_session_monitor_is_session_active (PolkitBackendSessionMonitor *monitor,
+ PolkitSubject *session)
+ {
+- return get_boolean (monitor, session, "is_active");
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ return sd_session_is_active (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
++ else
++#endif
++ return get_boolean (monitor, session, "is_active");
+ }
+
+diff -u -rN polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor-systemd.c polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor-systemd.c
+--- polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor-systemd.c 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor-systemd.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,414 +0,0 @@
+-/*
+- * Copyright (C) 2011 Red Hat, Inc.
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General
+- * Public License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+- * Boston, MA 02111-1307, USA.
+- *
+- * Author: Matthias Clasen
+- */
+-
+-#include "config.h"
+-#include <errno.h>
+-#include <pwd.h>
+-#include <grp.h>
+-#include <string.h>
+-#include <glib/gstdio.h>
+-#include <systemd/sd-login.h>
+-#include <stdlib.h>
+-
+-#include <polkit/polkit.h>
+-#include "polkitbackendsessionmonitor.h"
+-
+-/* <internal>
+- * SECTION:polkitbackendsessionmonitor
+- * @title: PolkitBackendSessionMonitor
+- * @short_description: Monitor sessions
+- *
+- * The #PolkitBackendSessionMonitor class is a utility class to track and monitor sessions.
+- */
+-
+-typedef struct
+-{
+- GSource source;
+- GPollFD pollfd;
+- sd_login_monitor *monitor;
+-} SdSource;
+-
+-static gboolean
+-sd_source_prepare (GSource *source,
+- gint *timeout)
+-{
+- *timeout = -1;
+- return FALSE;
+-}
+-
+-static gboolean
+-sd_source_check (GSource *source)
+-{
+- SdSource *sd_source = (SdSource *)source;
+-
+- return sd_source->pollfd.revents != 0;
+-}
+-
+-static gboolean
+-sd_source_dispatch (GSource *source,
+- GSourceFunc callback,
+- gpointer user_data)
+-
+-{
+- SdSource *sd_source = (SdSource *)source;
+- gboolean ret;
+-
+- g_warn_if_fail (callback != NULL);
+-
+- ret = (*callback) (user_data);
+-
+- sd_login_monitor_flush (sd_source->monitor);
+-
+- return ret;
+-}
+-
+-static void
+-sd_source_finalize (GSource *source)
+-{
+- SdSource *sd_source = (SdSource*)source;
+-
+- sd_login_monitor_unref (sd_source->monitor);
+-}
+-
+-static GSourceFuncs sd_source_funcs = {
+- sd_source_prepare,
+- sd_source_check,
+- sd_source_dispatch,
+- sd_source_finalize
+-};
+-
+-static GSource *
+-sd_source_new (void)
+-{
+- GSource *source;
+- SdSource *sd_source;
+- int ret;
+-
+- source = g_source_new (&sd_source_funcs, sizeof (SdSource));
+- sd_source = (SdSource *)source;
+-
+- if ((ret = sd_login_monitor_new (NULL, &sd_source->monitor)) < 0)
+- {
+- g_printerr ("Error getting login monitor: %d", ret);
+- }
+- else
+- {
+- sd_source->pollfd.fd = sd_login_monitor_get_fd (sd_source->monitor);
+- sd_source->pollfd.events = G_IO_IN;
+- g_source_add_poll (source, &sd_source->pollfd);
+- }
+-
+- return source;
+-}
+-
+-struct _PolkitBackendSessionMonitor
+-{
+- GObject parent_instance;
+-
+- GDBusConnection *system_bus;
+-
+- GSource *sd_source;
+-};
+-
+-struct _PolkitBackendSessionMonitorClass
+-{
+- GObjectClass parent_class;
+-
+- void (*changed) (PolkitBackendSessionMonitor *monitor);
+-};
+-
+-
+-enum
+-{
+- CHANGED_SIGNAL,
+- LAST_SIGNAL,
+-};
+-
+-static guint signals[LAST_SIGNAL] = {0};
+-
+-G_DEFINE_TYPE (PolkitBackendSessionMonitor, polkit_backend_session_monitor, G_TYPE_OBJECT);
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-static gboolean
+-sessions_changed (gpointer user_data)
+-{
+- PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (user_data);
+-
+- g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
+-
+- return TRUE;
+-}
+-
+-
+-static void
+-polkit_backend_session_monitor_init (PolkitBackendSessionMonitor *monitor)
+-{
+- GError *error;
+-
+- error = NULL;
+- monitor->system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+- if (monitor->system_bus == NULL)
+- {
+- g_printerr ("Error getting system bus: %s", error->message);
+- g_error_free (error);
+- }
+-
+- monitor->sd_source = sd_source_new ();
+- g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL);
+- g_source_attach (monitor->sd_source, NULL);
+-}
+-
+-static void
+-polkit_backend_session_monitor_finalize (GObject *object)
+-{
+- PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (object);
+-
+- if (monitor->system_bus != NULL)
+- g_object_unref (monitor->system_bus);
+-
+- if (monitor->sd_source != NULL)
+- {
+- g_source_destroy (monitor->sd_source);
+- g_source_unref (monitor->sd_source);
+- }
+-
+- if (G_OBJECT_CLASS (polkit_backend_session_monitor_parent_class)->finalize != NULL)
+- G_OBJECT_CLASS (polkit_backend_session_monitor_parent_class)->finalize (object);
+-}
+-
+-static void
+-polkit_backend_session_monitor_class_init (PolkitBackendSessionMonitorClass *klass)
+-{
+- GObjectClass *gobject_class;
+-
+- gobject_class = G_OBJECT_CLASS (klass);
+-
+- gobject_class->finalize = polkit_backend_session_monitor_finalize;
+-
+- /**
+- * PolkitBackendSessionMonitor::changed:
+- * @monitor: A #PolkitBackendSessionMonitor
+- *
+- * Emitted when something changes.
+- */
+- signals[CHANGED_SIGNAL] = g_signal_new ("changed",
+- POLKIT_BACKEND_TYPE_SESSION_MONITOR,
+- G_SIGNAL_RUN_LAST,
+- G_STRUCT_OFFSET (PolkitBackendSessionMonitorClass, changed),
+- NULL, /* accumulator */
+- NULL, /* accumulator data */
+- g_cclosure_marshal_VOID__VOID,
+- G_TYPE_NONE,
+- 0);
+-}
+-
+-PolkitBackendSessionMonitor *
+-polkit_backend_session_monitor_new (void)
+-{
+- PolkitBackendSessionMonitor *monitor;
+-
+- monitor = POLKIT_BACKEND_SESSION_MONITOR (g_object_new (POLKIT_BACKEND_TYPE_SESSION_MONITOR, NULL));
+-
+- return monitor;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-GList *
+-polkit_backend_session_monitor_get_sessions (PolkitBackendSessionMonitor *monitor)
+-{
+- /* TODO */
+- return NULL;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-/**
+- * polkit_backend_session_monitor_get_user:
+- * @monitor: A #PolkitBackendSessionMonitor.
+- * @subject: A #PolkitSubject.
+- * @error: Return location for error.
+- *
+- * Gets the user corresponding to @subject or %NULL if no user exists.
+- *
+- * Returns: %NULL if @error is set otherwise a #PolkitUnixUser that should be freed with g_object_unref().
+- */
+-PolkitIdentity *
+-polkit_backend_session_monitor_get_user_for_subject (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *subject,
+- GError **error)
+-{
+- PolkitIdentity *ret;
+- guint32 uid;
+-
+- ret = NULL;
+-
+- if (POLKIT_IS_UNIX_PROCESS (subject))
+- {
+- uid = polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject));
+- if ((gint) uid == -1)
+- {
+- g_set_error (error,
+- POLKIT_ERROR,
+- POLKIT_ERROR_FAILED,
+- "Unix process subject does not have uid set");
+- goto out;
+- }
+- ret = polkit_unix_user_new (uid);
+- }
+- else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
+- {
+- GVariant *result;
+-
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.DBus",
+- "/org/freedesktop/DBus",
+- "org.freedesktop.DBus",
+- "GetConnectionUnixUser",
+- g_variant_new ("(s)", polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (subject))),
+- G_VARIANT_TYPE ("(u)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(u)", &uid);
+- g_variant_unref (result);
+-
+- ret = polkit_unix_user_new (uid);
+- }
+- else if (POLKIT_IS_UNIX_SESSION (subject))
+- {
+-
+- if (sd_session_get_uid (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)), &uid) < 0)
+- {
+- g_set_error (error,
+- POLKIT_ERROR,
+- POLKIT_ERROR_FAILED,
+- "Error getting uid for session");
+- goto out;
+- }
+-
+- ret = polkit_unix_user_new (uid);
+- }
+-
+- out:
+- return ret;
+-}
+-
+-/**
+- * polkit_backend_session_monitor_get_session_for_subject:
+- * @monitor: A #PolkitBackendSessionMonitor.
+- * @subject: A #PolkitSubject.
+- * @error: Return location for error.
+- *
+- * Gets the session corresponding to @subject or %NULL if no session exists.
+- *
+- * Returns: %NULL if @error is set otherwise a #PolkitUnixSession that should be freed with g_object_unref().
+- */
+-PolkitSubject *
+-polkit_backend_session_monitor_get_session_for_subject (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *subject,
+- GError **error)
+-{
+- PolkitSubject *session;
+-
+- session = NULL;
+-
+- if (POLKIT_IS_UNIX_PROCESS (subject))
+- {
+- gchar *session_id;
+- pid_t pid;
+-
+- pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
+- if (sd_pid_get_session (pid, &session_id) < 0)
+- goto out;
+-
+- session = polkit_unix_session_new (session_id);
+- free (session_id);
+- }
+- else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
+- {
+- guint32 pid;
+- gchar *session_id;
+- GVariant *result;
+-
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.DBus",
+- "/org/freedesktop/DBus",
+- "org.freedesktop.DBus",
+- "GetConnectionUnixProcessID",
+- g_variant_new ("(s)", polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (subject))),
+- G_VARIANT_TYPE ("(u)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(u)", &pid);
+- g_variant_unref (result);
+-
+- if (sd_pid_get_session (pid, &session_id) < 0)
+- goto out;
+-
+- session = polkit_unix_session_new (session_id);
+- free (session_id);
+- }
+- else
+- {
+- g_set_error (error,
+- POLKIT_ERROR,
+- POLKIT_ERROR_NOT_SUPPORTED,
+- "Cannot get user for subject of type %s",
+- g_type_name (G_TYPE_FROM_INSTANCE (subject)));
+- }
+-
+- out:
+-
+- return session;
+-}
+-
+-gboolean
+-polkit_backend_session_monitor_is_session_local (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *session)
+-{
+- char *seat;
+-
+- if (!sd_session_get_seat (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)), &seat))
+- {
+- free (seat);
+- return TRUE;
+- }
+-
+- return FALSE;
+-}
+-
+-
+-gboolean
+-polkit_backend_session_monitor_is_session_active (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *session)
+-{
+- return sd_session_is_active (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
+-}
+-
diff --git a/abs/extra/poppler-data/PKGBUILD b/abs/extra/poppler-data/PKGBUILD
index 6b22ea3..49db88e 100644
--- a/abs/extra/poppler-data/PKGBUILD
+++ b/abs/extra/poppler-data/PKGBUILD
@@ -2,7 +2,7 @@
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=poppler-data
-pkgver=0.4.3
+pkgver=0.4.5
pkgrel=1
pkgdesc="Encoding data for the poppler PDF rendering library"
arch=(any)
@@ -10,7 +10,7 @@ license=('custom' 'GPL2')
conflicts=('poppler<0.10.5')
url="http://poppler.freedesktop.org/"
source=(http://poppler.freedesktop.org/${pkgname}-${pkgver}.tar.gz)
-md5sums=('2d648047e5d0b315df1571b460ee6a96')
+md5sums=('448dd7c5077570e340340706cef931aa')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/abs/extra/poppler/PKGBUILD b/abs/extra/poppler/PKGBUILD
deleted file mode 100644
index af474e4..0000000
--- a/abs/extra/poppler/PKGBUILD
+++ /dev/null
@@ -1,66 +0,0 @@
-# $Id: PKGBUILD 94944 2010-10-12 19:48:07Z ibiru $
-# Maintainer: Jan de Groot <jgc@archlinux.org>
-
-pkgbase=poppler
-pkgname=('poppler' 'poppler-glib' 'poppler-qt')
-pkgver=0.14.4
-pkgrel=1
-arch=(i686 x86_64)
-license=('GPL')
-makedepends=('libjpeg>=8.0.2' 'gcc-libs>=4.5.0' 'cairo>=1.10.0' 'libxml2>=2.7.7' 'fontconfig>=2.8.0' 'openjpeg>=1.3-3' 'gtk2>=2.22.0' 'qt>=4.7.0' 'pkgconfig' 'lcms>=1.19')
-options=('!libtool')
-url="http://poppler.freedesktop.org/"
-source=(http://poppler.freedesktop.org/${pkgname}-${pkgver}.tar.gz)
-md5sums=('a40fe96e1115f648ce4689e667743530')
-
-build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --disable-static \
- --enable-cairo-output \
- --enable-xpdf-headers \
- --enable-libjpeg --enable-zlib \
- --enable-poppler-qt4 \
- --enable-poppler-glib
- make
-}
-
-package_poppler() {
- pkgdesc="PDF rendering library based on xpdf 3.0"
- depends=('libjpeg>=8.0.2' 'gcc-libs>=4.5.0' 'cairo>=1.10.0' 'libxml2>=2.7.7' 'fontconfig>=2.8.0' 'openjpeg>=1.3-3' 'lcms>=1.19' 'poppler-data>=0.4.3')
- conflicts=("poppler-qt3<${pkgver}")
-
- cd "${srcdir}/${pkgbase}-${pkgver}"
- make DESTDIR="${pkgdir}" install
-
- rm -rf "${pkgdir}"/usr/include/poppler/{glib,qt4}
- rm -f "${pkgdir}"/usr/lib/libpoppler-{glib,qt4}.so*
- rm -f "${pkgdir}"/usr/lib/pkgconfig/poppler-{glib,qt4}.pc
- rm -rf "${pkgdir}/usr/share/gtk-doc"
-}
-
-package_poppler-glib() {
- pkgdesc="Poppler glib bindings"
- depends=("poppler=${pkgver}" 'gtk2>=2.22.0')
-
- cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
- make DESTDIR="${pkgdir}" install-libLTLIBRARIES
- cd "${srcdir}/${pkgbase}-${pkgver}/glib"
- make DESTDIR="${pkgdir}" install
- install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
- install -m644 ../poppler-glib.pc "${pkgdir}/usr/lib/pkgconfig/"
- rm -f "${pkgdir}"/usr/lib/libpoppler.*
-}
-
-package_poppler-qt() {
- pkgdesc="Poppler Qt bindings"
- depends=("poppler=${pkgver}" 'qt>=4.7.0')
-
- cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
- make DESTDIR="${pkgdir}" install-libLTLIBRARIES
- cd "${srcdir}/${pkgbase}-${pkgver}/qt4"
- make DESTDIR="${pkgdir}" install
- install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
- install -m644 ../poppler-qt4.pc "${pkgdir}/usr/lib/pkgconfig/"
- rm -f "${pkgdir}"/usr/lib/libpoppler.*
-}
diff --git a/abs/extra/postgresql/PKGBUILD b/abs/extra/postgresql/PKGBUILD
index 2bbda86..a00160c 100644
--- a/abs/extra/postgresql/PKGBUILD
+++ b/abs/extra/postgresql/PKGBUILD
@@ -1,60 +1,56 @@
-# $Id: PKGBUILD 98184 2010-11-04 14:55:39Z dan $
-# Maintainer: Douglas Soares de Andrade <douglas@archlinux.org>
+# $Id: PKGBUILD 160730 2012-06-04 17:58:05Z dan $
+# Maintainer: Dan McGee <dan@archlinux.org>
pkgbase=postgresql
pkgname=('postgresql-libs' 'postgresql-docs' 'postgresql')
-pkgver=9.0.1
-pkgrel=3
+pkgver=9.1.4
+_majorver=${pkgver%.*}
+pkgrel=1
arch=('i686' 'x86_64')
-url="http://www.postgresql.org"
-license=('BSD')
-makedepends=('libxml2' 'python2' 'perl')
-source=(ftp://ftp.postgresql.org/pub/source/v${pkgver}/postgresql-${pkgver}.tar.bz2 \
- postgresql postgresql.confd build.patch postgresql.pam postgresql.logrotate)
+url="http://www.postgresql.org/"
+license=('custom:PostgreSQL')
+makedepends=('krb5' 'libxml2' 'python2' 'perl' 'tcl' 'openssl>=1.0.0')
+source=(ftp://ftp.postgresql.org/pub/source/v${pkgver}/postgresql-${pkgver}.tar.bz2
+ postgresql.rcd postgresql.confd postgresql.pam postgresql.logrotate)
build() {
- cd "${srcdir}/${pkgbase}-${pkgver}"
+ cd "${srcdir}/postgresql-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share/postgresql \
+ --with-krb5 \
+ --with-libxml \
+ --with-openssl \
+ --with-perl \
+ --with-python PYTHON=/usr/bin/python2 \
+ --with-tcl \
+ --with-pam \
+ --with-system-tzdata=/usr/share/zoneinfo \
+ --enable-nls \
+ --enable-thread-safety
- # patch to remove regress/test make target (won't build with it present)
- patch -Np1 -i ../build.patch
-
- # configure
- ./configure --prefix=/usr --mandir=/usr/share/man --with-libxml \
- --with-openssl --with-perl \
- --with-python PYTHON=/usr/bin/python2 --with-pam \
- --with-system-tzdata=/usr/share/zoneinfo --enable-nls \
- --datadir=/usr/share/postgresql --enable-thread-safety
-
- sed -i -e '/interfaces/d' src/Makefile
-
- # build
make world
-
- # build libs
- for dir in src/interfaces src/bin/pg_config; do
- pushd ${dir}
- make
- popd
- done
}
package_postgresql-libs() {
pkgdesc="Libraries for use with PostgreSQL"
- depends=('openssl>=1.0.0')
+ depends=('krb5' 'openssl>=1.0.0' 'readline>=6.0')
+ provides=('postgresql-client')
+ conflicts=('postgresql-client')
- cd "${srcdir}/${pkgbase}-${pkgver}"
+ cd "${srcdir}/postgresql-${pkgver}"
# install license
- install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/postgresql-libs/LICENSE"
# install libs
- for dir in src/interfaces src/bin/pg_config; do
- pushd ${dir}
- make DESTDIR="${pkgdir}" install
- popd
+ for dir in src/interfaces src/bin/pg_config src/bin/psql; do
+ make -C ${dir} DESTDIR="${pkgdir}" install
done
install -D -m644 doc/src/sgml/man1/pg_config.1 "${pkgdir}/usr/share/man/man1/pg_config.1"
+ install -D -m644 doc/src/sgml/man1/psql.1 "${pkgdir}/usr/share/man/man1/psql.1"
cd src/include
@@ -78,33 +74,42 @@ package_postgresql-docs() {
pkgdesc="HTML documentation for PostgreSQL"
options=(docs)
- cd "${srcdir}/${pkgbase}-${pkgver}"
+ cd "${srcdir}/postgresql-${pkgver}"
# install license
- install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/postgresql-docs/LICENSE"
make -C doc/src/sgml DESTDIR="${pkgdir}" install-html
chown -R root:root "${pkgdir}/usr/share/doc/postgresql/html/"
+
+ # clean up
+ rmdir "${pkgdir}"/usr/share/man/man{1,3,7}
+ rmdir "${pkgdir}"/usr/share/man
}
package_postgresql() {
pkgdesc="A sophisticated object-relational DBMS"
backup=('etc/conf.d/postgresql' 'etc/pam.d/postgresql' 'etc/logrotate.d/postgresql')
- depends=("postgresql-libs>=${pkgver}" 'libxml2' 'readline>=6.0')
+ depends=("postgresql-libs>=${pkgver}" 'krb5' 'libxml2' 'readline>=6.0' 'openssl>=1.0.0')
optdepends=('python2: for PL/Python support'
- 'perl: for PL/Perl support')
- provides=('postgresql-client')
- conflicts=('postgresql-client')
+ 'perl: for PL/Perl support'
+ 'tcl: for PL/Tcl support'
+ 'postgresql-old-upgrade: upgrade from previous major version using pg_upgrade')
+ install=postgresql.install
- cd "${srcdir}/${pkgbase}-${pkgver}"
+ cd "${srcdir}/postgresql-${pkgver}"
# install
make DESTDIR="${pkgdir}" install
make -C contrib DESTDIR="${pkgdir}" install
make -C doc/src/sgml DESTDIR="${pkgdir}" install-man
- # we don't want this, it is in the -libs package
- make -C src/bin/pg_config DESTDIR="${pkgdir}" uninstall
+
+ # we don't want these, they are in the -libs package
+ for dir in src/interfaces src/bin/pg_config src/bin/psql; do
+ make -C ${dir} DESTDIR="${pkgdir}" uninstall
+ done
rm "${pkgdir}/usr/share/man/man1/pg_config.1"
+ rm "${pkgdir}/usr/share/man/man1/psql.1"
# install license
install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgbase}/LICENSE"
@@ -113,9 +118,10 @@ package_postgresql() {
rm -rf "${pkgdir}/usr/include/postgresql/internal"
rm -rf "${pkgdir}/usr/include/libpq"
find "${pkgdir}/usr/include" -maxdepth 1 -type f -execdir rm {} +
+ rmdir "${pkgdir}/usr/share/doc/postgresql/html"
# install launch script
- install -D -m755 "${srcdir}/postgresql" "${pkgdir}/etc/rc.d/postgresql"
+ install -D -m755 "${srcdir}/postgresql.rcd" "${pkgdir}/etc/rc.d/postgresql"
# install conf file
install -D -m644 ${srcdir}/postgresql.confd \
@@ -128,9 +134,13 @@ package_postgresql() {
"${pkgdir}/etc/logrotate.d/postgresql"
}
-md5sums=('57ba57e43cfe29e16dacbf5789be98d1'
- '4153ac0ef4a77e709385b0a13e1c0fad'
- 'd63a05943cf0a2726aa2070f3033c569'
- '4d74f4227dc5e12bf95b3490758d86c9'
+md5sums=('a8035688dba988b782725ac1aec60186'
+ '1ddd1df8010549f237e7983bb326025e'
+ 'a54d09a20ab1672adf08f037df188d53'
'96f82c38f3f540b53f3e5144900acf17'
'd28e443f9f65a5712c52018b84e27137')
+sha256sums=('a0795a8eb3ae2d1a2914b63bf143d20182835d90699915ff43567c041d3c9712'
+ '9f6307b1358892e304f9474a456f0cb9160cfb8812a9da0430abe647f8a9cf45'
+ '3de5c059eead8816db15c2c5588e6196d6c4b0d704faf1a20912796cf589ba81'
+ '57dfd072fd7ef0018c6b0a798367aac1abb5979060ff3f9df22d1048bb71c0d5'
+ '6abb842764bbed74ea4a269d24f1e73d1c0b1d8ecd6e2e6fb5fb10590298605e')
diff --git a/abs/extra/postgresql/build.patch b/abs/extra/postgresql/build.patch
deleted file mode 100644
index c8f665d..0000000
--- a/abs/extra/postgresql/build.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur postgresql-8.2.3-orig/src/Makefile postgresql-8.2.3/src/Makefile
---- postgresql-8.2.3-orig/src/Makefile 2006-06-22 16:50:35.000000000 -0700
-+++ postgresql-8.2.3/src/Makefile 2007-03-05 10:46:24.000000000 -0800
-@@ -23,7 +23,6 @@
- $(MAKE) -C bin $@
- $(MAKE) -C pl $@
- $(MAKE) -C makefiles $@
-- $(MAKE) -C test/regress $@
-
- install: install-local
-
diff --git a/abs/extra/postgresql/postgresql b/abs/extra/postgresql/postgresql
deleted file mode 100755
index b00289e..0000000
--- a/abs/extra/postgresql/postgresql
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-. /etc/conf.d/postgresql
-
-case "$1" in
- start)
- stat_busy "Starting PostgreSQL"
- # initialization
- if [ ! `egrep '^postgres:' /etc/group` ]; then
- stat_busy "Adding postgres group"
- groupadd -g 88 postgres
- stat_done
- fi
- if [ ! `egrep '^postgres:' /etc/passwd` ]; then
- stat_busy "Adding postgres user"
- useradd -u 88 -g postgres -d $PGROOT -s /bin/bash postgres
- [ -d $PGROOT ] && chown -R postgres.postgres $PGROOT
- stat_done
- fi
- if [ ! -d $PGROOT ]; then
- mkdir -p $PGROOT/data && chown -R postgres.postgres $PGROOT
- su - postgres -c "/usr/bin/initdb $INITOPTS -D $PGROOT/data"
- fi
- if [ ! -e /var/log/postgresql.log ]; then
- touch /var/log/postgresql.log
- chown postgres /var/log/postgresql.log
- fi
- # start the process
- su - postgres -c \
- "/usr/bin/pg_ctl -D $PGROOT/data -l /var/log/postgresql.log -W start"
- if [ $? -gt 0 ]; then
- stat_fail
- else
- add_daemon postgresql
- stat_done
- fi
- ;;
- stop)
- stat_busy "Stopping PostgreSQL"
- su - postgres -c \
- "/usr/bin/pg_ctl -D $PGROOT/data -l /var/log/postgresql.log -w stop"
- if [ $? -gt 0 ]; then
- stat_fail
- else
- rm_daemon postgresql
- stat_done
- fi
- ;;
- restart)
- $0 stop
- sleep 3
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
-esac
-exit 0
diff --git a/abs/extra/postgresql/postgresql.confd b/abs/extra/postgresql/postgresql.confd
index 5f8fa03..6001c16 100644
--- a/abs/extra/postgresql/postgresql.confd
+++ b/abs/extra/postgresql/postgresql.confd
@@ -1,5 +1,11 @@
-#
-# Parameters to be passed to postgresql
-#
-PGROOT="/var/lib/postgres"
-INITOPTS="--locale $LANG"
+##
+## Parameters to be passed to postgresql
+##
+## Default data directory location
+#PGROOT="/var/lib/postgres"
+## Passed to initdb if necessary
+INITOPTS="--locale en_US.UTF-8"
+## Default log file location
+#PGLOG="/var/log/postgresql.log"
+## Additional options to pass via pg_ctl's '-o' option
+#PGOPTS=""
diff --git a/abs/extra/postgresql/postgresql.install b/abs/extra/postgresql/postgresql.install
new file mode 100644
index 0000000..c524322
--- /dev/null
+++ b/abs/extra/postgresql/postgresql.install
@@ -0,0 +1,26 @@
+post_install() {
+ if [ ! -d '/var/lib/postgres' ]; then
+ mkdir -p '/var/lib/postgres'
+ fi
+ getent group postgres >/dev/null || groupadd -g 88 postgres
+ getent passwd postgres >/dev/null || useradd -c 'PostgreSQL user' -u 88 -g postgres -d '/var/lib/postgres' -s /bin/bash postgres
+ passwd -l postgres >/dev/null
+}
+
+post_upgrade() {
+ post_install $1
+ # FS#23858, fix postgres user shell issue
+ postgres_shell=$(getent passwd postgres | cut -d: -f7)
+ if [ "$postgres_shell" = "/sbin/nologin" ]; then
+ chsh -s /bin/bash postgres
+ fi
+}
+
+post_remove() {
+ if getent passwd postgres >/dev/null; then
+ userdel postgres
+ fi
+ if getent group postgres >/dev/null; then
+ groupdel postgres
+ fi
+}
diff --git a/abs/extra/postgresql/postgresql.logrotate b/abs/extra/postgresql/postgresql.logrotate
deleted file mode 100644
index 9c36918..0000000
--- a/abs/extra/postgresql/postgresql.logrotate
+++ /dev/null
@@ -1,4 +0,0 @@
-/var/log/postgresql.log {
- copytruncate
- missingok
-}
diff --git a/abs/extra/postgresql/postgresql.rcd b/abs/extra/postgresql/postgresql.rcd
new file mode 100755
index 0000000..f3600b3
--- /dev/null
+++ b/abs/extra/postgresql/postgresql.rcd
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/postgresql
+
+# Default PGROOT if it wasn't defined in the conf.d file
+PGROOT=${PGROOT:-/var/lib/postgres}
+PGLOG=${PGLOG:-/var/log/postgresql.log}
+PGCTL_BIN=/usr/bin/pg_ctl
+PGCTL_ARGS=(-D "$PGROOT/data" -l "$PGLOG" -s -w)
+[[ $PGOPTS ]] && PGCTL_ARGS+=(-o "$PGOPTS")
+
+postgres_init() {
+ # initialization
+ if [[ ! -d "$PGROOT/data" ]]; then
+ mkdir -p "$PGROOT/data" && chown -R postgres:postgres "$PGROOT"
+ su - postgres -c "/usr/bin/initdb $INITOPTS -D '$PGROOT/data'"
+ fi
+ if [[ ! -e "$PGLOG" ]]; then
+ touch "$PGLOG"
+ chown postgres "$PGLOG"
+ fi
+}
+
+do_postgres() {
+ su - postgres -c "'$PGCTL_BIN' $(printf '%q ' "${PGCTL_ARGS[@]}" "$@")"
+}
+
+case $1 in
+ start)
+ postgres_init
+ stat_busy "Starting PostgreSQL"
+ if do_postgres start; then
+ add_daemon postgresql
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping PostgreSQL"
+ if do_postgres stop -m fast; then
+ rm_daemon postgresql
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ reload)
+ stat_busy "Reloading PostgreSQL"
+ if do_postgres reload; then
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ restart)
+ postgres_init
+ stat_busy "Restarting PostgreSQL"
+ if do_postgres restart -m fast; then
+ add_daemon postgresql
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ status)
+ stat_busy "Checking PostgreSQL status";
+ ck_status postgresql
+ ;;
+ *)
+ echo "usage: $0 {start|stop|reload|restart|status}"
+ exit 1
+esac
diff --git a/abs/extra/psutils/PKGBUILD b/abs/extra/psutils/PKGBUILD
index b8dab78..e5c9af4 100644
--- a/abs/extra/psutils/PKGBUILD
+++ b/abs/extra/psutils/PKGBUILD
@@ -1,33 +1,38 @@
-# $Id: PKGBUILD 49744 2009-08-15 14:42:41Z jgc $
+# $Id: PKGBUILD 137768 2011-09-10 17:03:05Z pierre $
# Maintainer: eric <eric@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=psutils
pkgver=1.17
-pkgrel=2
-pkgdesc="A set of postscript utilities"
+pkgrel=3
arch=('i686' 'x86_64')
+pkgdesc="A set of postscript utilities"
+url="http://www.tardis.ed.ac.uk/~ajcd/psutils/index.html"
license=('custom')
depends=('glibc' 'ghostscript')
provides=('psutils-lprng')
replaces=('psutils-lprng')
-url="http://www.tardis.ed.ac.uk/~ajcd/psutils/index.html"
-source=(ftp://ftp.enst.fr/pub/unix/a2ps/${pkgname}-${pkgver}.tar.gz
- psutils-1.17.diff)
+options=('!makeflags')
+source=("ftp://ftp.archlinux.org/other/psutils/${pkgname}-${pkgver}.tar.gz"
+ 'psutils-1.17.diff')
md5sums=('b161522f3bd1507655326afa7db4a0ad'
'2b49e9e796000b42f42804d4b50a2be1')
build() {
cd "${srcdir}/${pkgname}"
- patch -Np1 -i "${srcdir}/psutils-1.17.diff" || return 1
+ patch -Np1 -i "${srcdir}/psutils-1.17.diff"
+ make -f Makefile.unix BINDIR="${pkgdir}/usr/bin" \
+ INCLUDEDIR="${pkgdir}/usr/include/psutils" PERL=/usr/bin/perl \
+ MANDIR="${pkgdir}/usr/share/man/man1"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"
install -d -m755 "${pkgdir}/usr/include"
install -d -m755 "${pkgdir}/usr/share/man"
- make -j1 -f Makefile.unix BINDIR="${pkgdir}/usr/bin" \
- INCLUDEDIR="${pkgdir}/usr/include/psutils" PERL=/usr/bin/perl \
- MANDIR="${pkgdir}/usr/share/man/man1" || return 1
- make -j1 -f Makefile.unix BINDIR="${pkgdir}/usr/bin" \
+ make -f Makefile.unix BINDIR="${pkgdir}/usr/bin" \
INCLUDEDIR="${pkgdir}/usr/include/psutils" PERL=/usr/bin/perl \
- MANDIR="${pkgdir}/usr/share/man/man1" install || return 1
+ MANDIR="${pkgdir}/usr/share/man/man1" install
install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
- install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+ install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
}
diff --git a/abs/extra/qt-assistant-compat/PKGBUILD b/abs/extra/qt-assistant-compat/PKGBUILD
index 49fa9f0..74cd0de 100644
--- a/abs/extra/qt-assistant-compat/PKGBUILD
+++ b/abs/extra/qt-assistant-compat/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 92392 2010-09-29 14:51:01Z ronald $
+# $Id: PKGBUILD 149629 2012-02-08 20:53:42Z pierre $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
pkgname=qt-assistant-compat
pkgver=4.6.3
-pkgrel=1
-pkgdesk="compat version of Qt Assistant"
+pkgrel=2
+pkgdesc="compat version of Qt Assistant"
url="http://qt.nokia.com/"
arch=('i686' 'x86_64')
license=('GPL3' 'LGPL')
depends=('qt')
source=('ftp://ftp.qt.nokia.com/qt/source/qt-assistant-qassistantclient-library-compat-src-4.6.3.tar.gz'
- 'debian_patches_01_build_system.diff')
+ 'debian_patches_01_build_system.diff')
md5sums=('a20148e0488d5c12ab35ccc107dcc64d'
'1b55290dc9fab0c035797e9301d2fa61')
@@ -18,38 +18,37 @@ md5sums=('a20148e0488d5c12ab35ccc107dcc64d'
build() {
cd ${srcdir}/qt-assistant-qassistantclient-library-compat-version-${pkgver}
- patch -Np1 -i ${srcdir}/debian_patches_01_build_system.diff
-
+ patch -Np1 -i ${srcdir}/debian_patches_01_build_system.diff
+
cd lib; if [ -e Makefile ]; then $(MAKE) distclean; fi
- rm -f translations/assistant_adp_*.qm
+ rm -f translations/assistant_adp_*.qm
qmake CONFIG+=create_prl
- make
- cd ../translations; lrelease assistant_adp_*.ts
- cd ..
- qmake CONFIG+=create_prl
- make
+ make
+ cd ../translations; lrelease assistant_adp_*.ts
+ cd ..
+ qmake CONFIG+=create_prl
+ make
}
-package(){
- cd ${srcdir}/qt-assistant-qassistantclient-library-compat-version-${pkgver}
+package() {
+ cd ${srcdir}/qt-assistant-qassistantclient-library-compat-version-${pkgver}
- make install INSTALL_ROOT=${pkgdir}
- cd lib
- make install INSTALL_ROOT=${pkgdir}
- cd ..
+ make install INSTALL_ROOT=${pkgdir}
+ cd lib
+ make install INSTALL_ROOT=${pkgdir}
+ cd ..
# Fix wrong path in prl file
sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" \
- ${pkgdir}/usr/lib/libQtAssistantClient.prl
+ ${pkgdir}/usr/lib/libQtAssistantClient.prl
# Install translations
install -d ${pkgdir}/usr/share/qt/translations/
install -p -m0644 translations/assistant_adp_*.qm \
- ${pkgdir}/usr/share/qt/translations/
+ ${pkgdir}/usr/share/qt/translations/
# Install prf file
install -D -p -m0644 features/assistant.prf \
- ${pkgdir}/usr/share/qt/mkspecs/features/assistant.prf
-
+ ${pkgdir}/usr/share/qt/mkspecs/features/assistant.prf
}
diff --git a/abs/extra/qtwebkit/PKGBUILD b/abs/extra/qtwebkit/PKGBUILD
deleted file mode 100644
index 30f1c84..0000000
--- a/abs/extra/qtwebkit/PKGBUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# $Id$
-# Maintainer: Andrea Scarpino <andrea@archlinux.org>
-
-pkgname=qtwebkit
-pkgver=2.2.0
-pkgrel=3
-arch=('i686' 'x86_64')
-url='http://trac.webkit.org/wiki/QtWebKit'
-pkgdesc='An open source web browser engine (Qt port)'
-license=('LGPL2.1' 'GPL3')
-depends=('qt' 'gperf' 'bison' 'phonon' 'gstreamer0.10-base')
-makedepends=('python2' 'mesa' 'chrpath')
-conflicts=('qt<4.7')
-source=("http://get.qt.nokia.com/${pkgname}/QtWebKit-${pkgver}.tar.gz"
- 'python2-path.patch')
-sha1sums=('3582f3a8b593140af004a19479f5ec19693b3df7'
- 'b0ef3d5596171e3900a685df9bcfac3068ad6330')
-
-build() {
- cd "${srcdir}"/QtWebKit-${pkgver}
-
- patch -p1 -i "${srcdir}"/python2-path.patch
-
- cd Tools/Scripts
- ./build-webkit --qt \
- --prefix=/usr \
- --makeargs="${MAKEFLAGS}" \
- --release \
- --3d-canvas
-}
-
-package() {
- cd "${srcdir}"/QtWebKit-${pkgver}
- make INSTALL_ROOT="${pkgdir}" -C WebKitBuild/Release install
-
- # Fix RPATH
- chrpath -r /usr/lib/ "${pkgdir}"/usr/lib/qt/imports/QtWebKit/libqmlwebkitplugin.so
-}
diff --git a/abs/extra/qtwebkit/python2-path.patch b/abs/extra/qtwebkit/python2-path.patch
deleted file mode 100644
index 2e270e6..0000000
--- a/abs/extra/qtwebkit/python2-path.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- QtWebKit-2.2.0/Source/JavaScriptCore/DerivedSources.pro~ 2011-10-20 22:39:56.044519075 +0000
-+++ QtWebKit-2.2.0/Source/JavaScriptCore/DerivedSources.pro 2011-10-20 22:41:21.302047082 +0000
-@@ -88,5 +88,5 @@
- retgen.output = $$JSC_GENERATED_SOURCES_DIR/RegExpJitTables.h
- retgen.wkScript = $$PWD/create_regex_tables
- retgen.input = retgen.wkScript
--retgen.commands = python $$retgen.wkScript > ${QMAKE_FILE_OUT}
-+retgen.commands = python2 $$retgen.wkScript > ${QMAKE_FILE_OUT}
- addExtraCompiler(retgen)
---- QtWebKit-2.2.0/Source/WebCore/CodeGenerators.pri~ 2011-10-20 22:44:23.827225580 +0000
-+++ QtWebKit-2.2.0/Source/WebCore/CodeGenerators.pri 2011-10-20 22:44:38.550707819 +0000
-@@ -640,7 +640,7 @@
- inspectorJSON.output = $${WC_GENERATED_SOURCES_DIR}/Inspector.idl
- inspectorJSON.input = INSPECTOR_JSON
- inspectorJSON.wkScript = $$PWD/inspector/generate-inspector-idl
--inspectorJSON.commands = python $$inspectorJSON.wkScript -o $${WC_GENERATED_SOURCES_DIR}/Inspector.idl $$PWD/inspector/Inspector.json
-+inspectorJSON.commands = python2 $$inspectorJSON.wkScript -o $${WC_GENERATED_SOURCES_DIR}/Inspector.idl $$PWD/inspector/Inspector.json
- inspectorJSON.depends = $$PWD/inspector/generate-inspector-idl
- inspectorJSON.wkAddOutputToSources = false
- addExtraCompiler(inspectorJSON)
-@@ -723,7 +723,7 @@
- entities.output = $${WC_GENERATED_SOURCES_DIR}/HTMLEntityTable.cpp
- entities.input = HTML_ENTITIES
- entities.wkScript = $$PWD/html/parser/create-html-entity-table
--entities.commands = python $$entities.wkScript -o $${WC_GENERATED_SOURCES_DIR}/HTMLEntityTable.cpp $$HTML_ENTITIES
-+entities.commands = python2 $$entities.wkScript -o $${WC_GENERATED_SOURCES_DIR}/HTMLEntityTable.cpp $$HTML_ENTITIES
- entities.clean = ${QMAKE_FILE_OUT}
- entities.depends = $$PWD/html/parser/create-html-entity-table
- addExtraCompiler(entities)
diff --git a/abs/extra/rarian/PKGBUILD b/abs/extra/rarian/PKGBUILD
index b83caff..f6ddb58 100644
--- a/abs/extra/rarian/PKGBUILD
+++ b/abs/extra/rarian/PKGBUILD
@@ -1,18 +1,15 @@
-# $Id: PKGBUILD 11986 2008-09-06 21:33:59Z jgc $
+# $Id: PKGBUILD 137591 2011-09-09 23:51:24Z allan $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=rarian
pkgver=0.8.1
-pkgrel=1
+pkgrel=2
pkgdesc="Documentation meta-data library, designed as a replacement for Scrollkeeper."
arch=('i686' 'x86_64')
url="http://rarian.freedesktop.org/"
license=('GPL')
depends=('gcc-libs')
makedepends=('libxslt')
-conflicts=('scrollkeeper')
-provides=('scrollkeeper')
-replaces=('scrollkeeper')
options=('!libtool')
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.8/${pkgname}-${pkgver}.tar.bz2
user-segfault.patch)
@@ -20,10 +17,14 @@ md5sums=('75091185e13da67a0ff4279de1757b94'
'457e9827197009cfa360911fe49a5ad7')
build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- patch -p0 -i ${srcdir}/user-segfault.patch || return 1
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p0 -i ${srcdir}/user-segfault.patch
./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --disable-static || return 1
- make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
+ --localstatedir=/var --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${startdir}/pkg install
}
diff --git a/abs/extra/recode/PKGBUILD b/abs/extra/recode/PKGBUILD
index af65e17..c1bf9ad 100644
--- a/abs/extra/recode/PKGBUILD
+++ b/abs/extra/recode/PKGBUILD
@@ -1,38 +1,45 @@
-# $Id: PKGBUILD 84692 2010-07-03 16:19:26Z ibiru $
+# $Id: PKGBUILD 151219 2012-02-25 08:35:55Z pierre $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=recode
pkgver=3.6
-pkgrel=6
+pkgrel=7
pkgdesc="Converts files between various character sets and usages"
arch=('i686' 'x86_64')
-url="http://www.gnu.org/software/recode/recode.html"
+url="http://recode.progiciels-bpi.ca/index.html"
license=('GPL' 'LGPL')
depends=('glibc' 'texinfo')
options=('!libtool')
install=recode.install
-#source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz
-source=(ftp://ftp.knoppmyth.net/R6/sources/pinard-Recode-v3.6-0-g2127b34.tar.gz
- http://ftp.de.debian.org/debian/pool/main/r/recode/recode_3.6-15.diff.gz
- recode-3.6-as-if.patch recode-3.6-gettextfix.diff)
+source=(${pkgname}-${pkgver}.tar.gz::"https://github.com/pinard/${pkgname}/tarball/v${pkgver}"
+ 'http://ftp.de.debian.org/debian/pool/main/r/recode/recode_3.6-17.diff.gz'
+ 'recode-3.6-as-if.patch' 'recode-3.6-gettextfix.diff' 'recode_automake.patch')
build() {
cd ${srcdir}/pinard-Recode-2127b34
patch -Np1 -i ${srcdir}/recode-3.6-as-if.patch
patch -Np1 -i ${srcdir}/recode-3.6-gettextfix.diff
- patch -Np1 -i ${srcdir}/recode_3.6-15.diff
+ patch -Np1 -i ${srcdir}/recode_3.6-17.diff
+ patch -Np1 -i ${srcdir}/recode_automake.patch
sed -i '1i#include <stdlib.h>' src/argmatch.c
rm -f acinclude.m4
autoreconf -fi
libtoolize
./configure --prefix=/usr --mandir=/usr/share/man \
--infodir=/usr/share/info --without-included-gettext
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
+ make
+}
+
+package() {
+ cd ${srcdir}/pinard-Recode-2127b34
+ make DESTDIR=${pkgdir} install
+
rm ${pkgdir}/usr/share/info/dir
gzip ${pkgdir}/usr/share/info/*
}
md5sums=('f82e9a6ede9119268c13493c9add2809'
- '95ca772e367a7ef56d3f46d724b6f86e'
+ '3716ae269074e31add3d29387ff09438'
'fca7484ba332c8ad59eb02334883cd92'
- 'eb602e80a24b5448604bfebeacc55304')
+ 'eb602e80a24b5448604bfebeacc55304'
+ 'ad550ad030ebbbd29b29d794e19f6ca8')
diff --git a/abs/extra/recode/__changelog b/abs/extra/recode/__changelog
index af8fbcb..14932e3 100644
--- a/abs/extra/recode/__changelog
+++ b/abs/extra/recode/__changelog
@@ -1 +1,3 @@
-1/2/11 - chw - fixed URL for source
+changed patch to 3.6.17
+added recode_automakepatch, taken from fedora
+
diff --git a/abs/extra/recode/recode_automake.patch b/abs/extra/recode/recode_automake.patch
new file mode 100644
index 0000000..8468f54
--- /dev/null
+++ b/abs/extra/recode/recode_automake.patch
@@ -0,0 +1,23 @@
+--- recode-3.6.orig/configure.in 2001-01-03 16:50:54.000000000 +0100
++++ recode-3.6/configure.in 2012-07-23 14:15:28.000000000 +0200
+@@ -15,7 +15,7 @@
+ AM_PROG_LIBTOOL
+
+ AC_ISC_POSIX
+-AM_C_PROTOTYPES
++dnl AM_C_PROTOTYPES
+ AC_C_CONST
+ AC_C_INLINE
+ ad_AC_PROG_FLEX
+--- recode-3.6.orig/src/Makefile.am 2000-12-06 17:36:12.000000000 +0100
++++ recode-3.6/src/Makefile.am 2012-07-23 14:47:07.000000000 +0200
+@@ -17,7 +17,7 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ # 02111-1307, USA.
+
+-AUTOMAKE_OPTIONS = gnits ansi2knr
++AUTOMAKE_OPTIONS = gnits
+ bin_PROGRAMS = recode
+ lib_LTLIBRARIES = librecode.la
+ man_MANS = recode.1
+
diff --git a/abs/extra/rpmextract/PKGBUILD b/abs/extra/rpmextract/PKGBUILD
index 1d76670..89505fa 100644
--- a/abs/extra/rpmextract/PKGBUILD
+++ b/abs/extra/rpmextract/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 83879 2010-06-23 15:55:24Z andrea $
+# $Id: PKGBUILD 149521 2012-02-08 11:18:26Z tpowa $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
pkgname=rpmextract
pkgver=1.0
-pkgrel=4
+pkgrel=5
pkgdesc="Script to convert or extract RPM archives (contains rpm2cpio)"
url="http://www.archlinux.org"
arch=('any')
diff --git a/abs/extra/rsync/PKGBUILD b/abs/extra/rsync/PKGBUILD
new file mode 100644
index 0000000..1224537
--- /dev/null
+++ b/abs/extra/rsync/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 160933 2012-06-07 05:56:33Z pierre $
+
+pkgname=rsync
+pkgver=3.0.9
+pkgrel=3
+pkgdesc="A file transfer program to keep remote files in sync"
+arch=('i686' 'x86_64')
+url="http://samba.anu.edu.au/rsync/"
+license=('GPL3')
+depends=('perl')
+backup=('etc/rsyncd.conf' 'etc/xinetd.d/rsync')
+source=("http://rsync.samba.org/ftp/rsync/$pkgname-$pkgver.tar.gz"
+ 'rsyncd.conf' 'rsyncd' 'rsync.xinetd' 'rsyncd.service')
+md5sums=('5ee72266fe2c1822333c407e1761b92b'
+ 'bce64d122a8e0f86872a4a21a03bc7f3'
+ 'ba413da4ebca05c57860151fda21efbc'
+ 'ea3e9277dc908bc51f9eddc0f6b935c1'
+ 'ec96f9089d71109557cdcaa3f0633ed6')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --with-included-popt
+ make
+}
+
+check() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make test
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -Dm755 ../rsyncd "$pkgdir/etc/rc.d/rsyncd"
+ install -Dm644 ../rsyncd.conf "$pkgdir/etc/rsyncd.conf"
+ install -Dm644 ../rsync.xinetd "$pkgdir/etc/xinetd.d/rsync"
+ install -Dm644 ../rsyncd.service "$pkgdir/usr/lib/systemd/system/rsyncd.service"
+ install -Dm755 support/rrsync "$pkgdir/usr/lib/rsync/rrsync"
+}
diff --git a/abs/extra/rsync/rsync.xinetd b/abs/extra/rsync/rsync.xinetd
new file mode 100644
index 0000000..f5b6b1e
--- /dev/null
+++ b/abs/extra/rsync/rsync.xinetd
@@ -0,0 +1,11 @@
+service rsync
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/bin/rsync
+ server_args = --daemon
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/abs/extra/rsync/rsyncd b/abs/extra/rsync/rsyncd
new file mode 100644
index 0000000..27836d5
--- /dev/null
+++ b/abs/extra/rsync/rsyncd
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+[ -f /etc/conf.d/rsyncd ] && . /etc/conf.d/rsyncd
+
+case "$1" in
+ start)
+ stat_busy "Starting rsyncd"
+ [ ! -f /run/daemons/rsyncd ] && /usr/bin/rsync --daemon $RSYNCD_ARGS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon rsyncd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping rsyncd"
+ [ -f /run/rsyncd.pid ] && kill `cat /run/rsyncd.pid`
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon rsyncd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/abs/extra/rsync/rsyncd.conf b/abs/extra/rsync/rsyncd.conf
new file mode 100644
index 0000000..1521060
--- /dev/null
+++ b/abs/extra/rsync/rsyncd.conf
@@ -0,0 +1,10 @@
+uid = nobody
+gid = nobody
+use chroot = no
+max connections = 4
+syslog facility = local5
+pid file = /run/rsyncd.pid
+
+[ftp]
+ path = /srv/ftp
+ comment = ftp area
diff --git a/abs/extra/rsync/rsyncd.service b/abs/extra/rsync/rsyncd.service
new file mode 100644
index 0000000..ea2e32c
--- /dev/null
+++ b/abs/extra/rsync/rsyncd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=A file transfer program to keep remote files in sync
+
+[Service]
+EnvironmentFile=-/etc/conf.d/rsyncd
+ExecStart=/usr/bin/rsync --daemon --no-detach ${RSYNCD_ARGS}
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/extra/rtmpdump/PKGBUILD b/abs/extra/rtmpdump/PKGBUILD
index 03263a4..b1e933a 100644
--- a/abs/extra/rtmpdump/PKGBUILD
+++ b/abs/extra/rtmpdump/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: PKGBUILD 134127 2011-08-02 03:47:07Z eric $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: xduugu
# Contributor: Elis Hughes <elishughes@googlemail.com>
diff --git a/abs/extra/ruby/PKGBUILD b/abs/extra/ruby/PKGBUILD
index e990221..0845452 100644
--- a/abs/extra/ruby/PKGBUILD
+++ b/abs/extra/ruby/PKGBUILD
@@ -1,51 +1,56 @@
-# $Id: PKGBUILD 96253 2010-10-19 15:06:00Z stephane $
-# Maintainer: Allan McRae <allan@archlinux.org>
+# Maintainer: Thomas Dziedzic <gostrc@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: John Proctor <jproctor@prium.net>
# Contributor: Jeramy Rutley <jrutley@gmail.com>
-pkgname=('ruby' 'ruby-docs')
-pkgver=1.9.2_p0
-_pkgver=1.9.2-p0
-pkgrel=4
-pkgdesc="An object-oriented language for quick and easy programming"
+pkgname=ruby
+pkgver=1.9.3_p194
+pkgrel=2
+pkgdesc='An object-oriented language for quick and easy programming'
arch=('i686' 'x86_64')
-url="http://www.ruby-lang.org/en/"
-license=('custom')
-makedepends=('gdbm' 'db' 'openssl' 'zlib' 'readline' 'tk' 'libffi'
- 'doxygen' 'graphviz')
-options=('!emptydirs')
-source=("ftp://ftp.ruby-lang.org/pub/ruby/1.9/${pkgname}-${_pkgver}.tar.bz2")
-md5sums=('d8a02cadf57d2571cd4250e248ea7e4b')
-sha256sums=('e9710990ed8c2e794123aba509010471915fb13c27dae0118831d2001a9c8d3b')
+url='http://www.ruby-lang.org/en/'
+license=('BSD' 'custom')
+backup=('etc/gemrc')
+provides=('rubygems' 'rake')
+conflicts=('rake')
+depends=('openssl' 'libffi' 'libyaml')
+makedepends=('tk')
+optdepends=('tk: for Ruby/TK'
+ 'ruby-docs: Ruby documentation')
+options=('!emptydirs' '!makeflags')
+install='ruby.install'
+source=("ftp://ftp.ruby-lang.org/pub/ruby/${pkgver%.*}/ruby-${pkgver//_/-}.tar.bz2"
+ 'gemrc')
+md5sums=('2278eff4cfed3cbc0653bc73085caa34'
+ '6fb8e7a09955e0f64be3158fb4a27e7a')
build() {
- cd "${srcdir}/${pkgname}-${_pkgver}"
- ./configure --prefix=/usr \
- --enable-shared \
- --enable-pthread \
- --disable-rpath
+ cd ruby-${pkgver//_/-}
+
+ PKG_CONFIG=/usr/bin/pkg-config ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-shared \
+ --enable-pthread \
+ --disable-rpath \
+ --disable-install-doc
+
make
}
-package_ruby()
-{
- depends=('gdbm' 'db' 'openssl' 'zlib' 'readline' 'libffi')
- provides=('rubygems' 'rake')
- conflicts=('rubygems' 'rake')
- optdepends=('tk: for Ruby/TK')
+check() {
+ cd ruby-${pkgver//_/-}
- cd "${srcdir}/${pkgname}-${_pkgver}"
- make DESTDIR="${pkgdir}" install-nodoc
- install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+ make test
}
-package_ruby-docs()
-{
- pkgdesc="Documentation files for ruby"
- #arch=('any')
- depends=('ruby')
+package() {
+ cd ruby-${pkgver//_/-}
+
+ make DESTDIR="${pkgdir}" install-nodoc
+
+ install -D -m644 ${srcdir}/gemrc "${pkgdir}/etc/gemrc"
- cd "${srcdir}/${pkgname}-${_pkgver}"
- make -j1 DESTDIR="${pkgdir}" install-doc install-capi
- install -Dm644 COPYING "${pkgdir}/usr/share/licenses/ruby-docs/COPYING"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby/LICENSE"
+ install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby/BSDL"
}
diff --git a/abs/extra/ruby/gemrc b/abs/extra/ruby/gemrc
new file mode 100644
index 0000000..3d11de1
--- /dev/null
+++ b/abs/extra/ruby/gemrc
@@ -0,0 +1,5 @@
+# Read about the gemrc format at http://docs.rubygems.org/read/chapter/11
+
+# --user-install is used to install to $HOME/.gem/ by default since we want to separate
+# pacman installed gems and gem installed gems
+gem: --user-install
diff --git a/abs/extra/ruby/ruby.install b/abs/extra/ruby/ruby.install
new file mode 100644
index 0000000..ce78e96
--- /dev/null
+++ b/abs/extra/ruby/ruby.install
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+print_gem_default_target() {
+ echo 'The default location of gem installs is $HOME/.gem/ruby'
+ echo 'Add the following line to your PATH if you plan to install using gem'
+ echo '$(ruby -rubygems -e "puts Gem.user_dir")/bin'
+ echo 'If you want to install to the system wide location, you must either:'
+ echo 'edit /etc/gemrc or run gem with the --no-user-install flag.'
+}
+
+# arg 1: the new package version
+post_install() {
+ print_gem_default_target
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ if [ "$(vercmp $2 1.9.3_p125-4)" -lt 0 ]; then
+ print_gem_default_target
+ fi
+}
diff --git a/abs/extra/samba/PKGBUILD b/abs/extra/samba/PKGBUILD
index eced810..63d943d 100644
--- a/abs/extra/samba/PKGBUILD
+++ b/abs/extra/samba/PKGBUILD
@@ -1,25 +1,27 @@
-# $Id: PKGBUILD 94658 2010-10-09 09:44:15Z tpowa $
-# Maintainer: Tobias Powalowski <tpowa@archlinux.org
+# $Id: PKGBUILD 162373 2012-06-26 05:39:58Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>
pkgbase=samba
-pkgname=('smbclient' 'samba')
-pkgver=3.5.6
+pkgname=('libwbclient' 'smbclient' 'samba')
+pkgver=3.6.6
# We use the 'A' to fake out pacman's version comparators. Samba chooses
# to append 'a','b',etc to their subsequent releases, which pamcan
# misconstrues as alpha, beta, etc. Bad samba!
-_realver=3.5.6
-pkgrel=2
-arch=('i686' 'x86_64')
+_realver=3.6.6
+pkgrel=1
+arch=(i686 x86_64)
url="http://www.samba.org"
license=('GPL3')
-makedepends=('db>=4.7' 'popt' 'acl' 'libldap' 'libcap>=2.16' 'heimdal>=1.2-1' 'pam' 'gnutls>=2.4.1' 'talloc' 'tdb')
-options=(!makeflags)
+makedepends=('db' 'popt' 'libcups' 'acl' 'libldap' 'libcap' 'krb5' 'pam' 'gnutls>=2.4.1' 'talloc' 'tdb')
source=(http://us1.samba.org/samba/ftp/stable/${pkgbase}-${_realver}.tar.gz
- samba samba.logrotate
- swat.xinetd
- samba.pam
+ samba samba.logrotate
+ swat.xinetd
+ samba.pam
samba.conf.d
- fix-ipv6-mount.patch)
+ smbd.service
+ nmbd.service
+ winbindd.service
+ samba.conf)
### UNINSTALL dmapi package before building!!!
build() {
@@ -33,42 +35,48 @@ build() {
--with-fhs \
--with-pam \
--with-pam_smbpass \
- --with-pammodulesdir=/lib/security \
+ --with-pammodulesdir=/usr/lib/security \
+ --with-dnsupdate \
+ --with-automount \
+ --with-quotas \
--with-ads \
--with-acl-support \
- --with-cifsmount \
--with-libsmbclient \
--with-syslog \
--enable-external-libtalloc \
--disable-dnssd \
--disable-avahi \
- --with-cifsumount \
- --with-shared-modules=idmap_ad,idmap_adex,idmap_rid,idmap_hash \
+ --with-shared-modules=idmap_ad,idmap_adex,idmap_rid,idmap_hash,idmap_tdb2 \
--enable-external-libtdb
- make || return 1
+ make
+}
+
+package_libwbclient () {
+pkgdesc="Samba winbind client library"
+depends=('glibc')
+ cd ${srcdir}/${pkgbase}-${_realver}/source3
+ mkdir -p ${pkgdir}/usr/lib
+ for i in libwbclient*; do
+ cp -a bin/${i}*.so* ${pkgdir}/usr/lib/
+ done
}
package_smbclient () {
pkgdesc="Tools to access a server's filespace and printers via SMB"
-depends=('readline>=6.0.00' 'popt' 'libldap>=2.4.18-1' 'libcap>=2.16' 'heimdal>=1.2-1' 'db>=4.7' 'e2fsprogs' 'tdb' 'talloc')
+depends=('readline' 'popt' 'libldap' 'cifs-utils' 'libcap' 'krb5' 'db' 'e2fsprogs' 'tdb' 'talloc' 'libwbclient')
cd ${srcdir}/${pkgbase}-${_realver}/source3
- mkdir -p ${pkgdir}/usr/bin ${pkgdir}/sbin ${pkgdir}/usr/lib
+ mkdir -p ${pkgdir}/usr/bin ${pkgdir}/usr/lib
install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${pkgdir}/usr/bin/
- install -m755 bin/{mount.cifs,umount.cifs} ${pkgdir}/sbin/
- for i in libnetapi* libwbclient* libsmbclient*;do
+ for i in libnetapi* libsmbclient*;do
cp -a bin/${i}*.so* ${pkgdir}/usr/lib/
done
install -m755 script/smbtar ${pkgdir}/usr/bin/
- #mkdir -p ${pkgdir}/usr/lib/cups/backend
- #ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb
+ mkdir -p ${pkgdir}/usr/lib/cups/backend
+ ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb
mkdir -p ${pkgdir}/usr/include
install -m644 include/libsmbclient.h ${pkgdir}/usr/include/
install -m644 lib/netapi/netapi.h ${pkgdir}/usr/include/
- mkdir -p ${pkgdir}/usr/share/man/man{1,7,8}
- for man in smbspool \
- umount.cifs mount.cifs net; do
- install -m644 ../docs/manpages/${man}.8 ${pkgdir}/usr/share/man/man8/
- done
+ mkdir -p ${pkgdir}/usr/share/man/man{1,7}
for man in rpcclient smbcacls smbclient smbcquotas smbget \
smbtree smbtar nmblookup; do
install -m644 ../docs/manpages/${man}.1 ${pkgdir}/usr/share/man/man1/
@@ -78,25 +86,25 @@ depends=('readline>=6.0.00' 'popt' 'libldap>=2.4.18-1' 'libcap>=2.16' 'heimdal>=
package_samba () {
pkgdesc="Tools to access a server's filespace and printers via SMB"
-backup=(etc/logrotate.d/samba
- etc/pam.d/samba
+backup=(etc/logrotate.d/samba
+ etc/pam.d/samba
etc/samba/smb.conf
etc/xinetd.d/swat
etc/conf.d/samba)
-depends=('db>=4.7' 'popt' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap>=2.16' 'heimdal>=1.2-1' 'pam' 'gnutls>=2.4.1' 'e2fsprogs' 'tdb' 'talloc')
+depends=('db' 'popt' 'libcups' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap' 'krb5' 'pam' 'gnutls' 'e2fsprogs' 'tdb' 'talloc')
+install='samba.install'
cd ${srcdir}/samba-${_realver}/source3
- mkdir -p ${pkgdir}/var/log/samba
mkdir -p ${pkgdir}/etc/samba/private
chmod 700 ${pkgdir}/etc/samba/private
- make DESTDIR=${pkgdir} install || return 1
+ make DESTDIR=${pkgdir} install
chmod 644 ${pkgdir}/usr/include/*.h
rm -rf ${pkgdir}/usr/var
+ rm -rf ${pkgdir}/var/run/samba
(cd script; cp installbin.sh i; cat i | sed 's/\/sbin\///' > installbin.sh)
install -D -m755 ../../samba ${pkgdir}/etc/rc.d/samba
install -D -m644 ../../samba.conf.d ${pkgdir}/etc/conf.d/samba
mkdir -p ${pkgdir}/etc/samba
- cat ../examples/smb.conf.default | \
- sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default
+ cat ../examples/smb.conf.default | sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default
install -D -m644 ../../samba.logrotate ${pkgdir}/etc/logrotate.d/samba
install -D -m644 ../../swat.xinetd ${pkgdir}/etc/xinetd.d/swat
install -D -m644 ../../samba.pam ${pkgdir}/etc/pam.d/samba
@@ -106,15 +114,20 @@ depends=('db>=4.7' 'popt' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap>=2.16' 'h
# fix logrotate
sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default
# nsswitch libraries
- install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_wins.so ${pkgdir}/lib/libnss_wins.so
- ln -s libnss_wins.so ${pkgdir}/lib/libnss_wins.so.2
- install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_winbind.so ${pkgdir}/lib/libnss_winbind.so
+ install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_wins.so ${pkgdir}/usr/lib/libnss_wins.so
+ ln -s libnss_wins.so ${pkgdir}/usr/lib/libnss_wins.so.2
+ install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_winbind.so ${pkgdir}/usr/lib/libnss_winbind.so
+ ln -s libnss_winbind.so ${pkgdir}/usr/lib/libnss_winbind.so.2
+ # winbind krb5 locator
+ mkdir -p ${pkgdir}/usr/lib/krb5/plugins/libkrb5
+ install -d -m 0755 ${pkgdir}/usr/lib/krb5/plugins/libkrb5
+ install -m 755 bin/winbind_krb5_locator.so ${pkgdir}/usr/lib/krb5/plugins/libkrb5/winbind_krb5_locator.so
# remove conflict files of smbclient
for man in libsmbclient smbspool \
- umount.cifs mount.cifs net; do
+ mount.cifs net cifs.upcall; do
rm -f ${pkgdir}/usr/share/man/man8/${man}.8
done
- for i in libnetapi* libwbclient* libsmbclient*;do
+ for i in libnetapi* libwbclient* libsmbclient* winbind_krb5*;do
rm -f ${pkgdir}/usr/lib/$i
done
for bin in net \
@@ -122,6 +135,7 @@ depends=('db>=4.7' 'popt' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap>=2.16' 'h
smbcquotas smbget smbspool smbtar smbtree; do
rm -f ${pkgdir}/usr/bin/$bin
done
+ rm -f ${pkgdir}/usr/sbin/cifs.upcall
rm -f ${pkgdir}/usr/include/netapi.h
for man in rpcclient smbcacls smbclient smbcquotas \
smbtree smbtar nmblookup smbget; do
@@ -134,11 +148,21 @@ depends=('db>=4.7' 'popt' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap>=2.16' 'h
rm -f ${pkgdir}/usr/include/libsmbclient.h
# copy ldap example
install -D -m644 ${srcdir}/samba-${_realver}/examples/LDAP/samba.schema ${pkgdir}/usr/share/doc/samba/examples/LDAP/samba.schema
+ # install systemd files
+ for i in smbd nmbd winbindd; do
+ install -D -m644 ${srcdir}/$i.service ${pkgdir}/usr/lib/systemd/system/$i.service
+ done
+ # create ephemeral dirs via tmpfiles rather than shipping them in package
+ install -D -m644 ${srcdir}/samba.conf ${pkgdir}/usr/lib/tmpfiles.d/samba.conf
+ rm -rf ${pkgdir}/var/run
}
-md5sums=('bf6c09ea497a166df8bd672db1d8da8f'
- '891b9be03e7adf65c9a00319c76d33e5'
+md5sums=('0bea52842d172231c0c0e23ee570d7af'
+ 'a45a4283723be2b0ae32439dc4496a09'
'5697da77590ec092cc8a883bae06093c'
'a4bbfa39fee95bba2e7ad6b535fae7e6'
'96f82c38f3f540b53f3e5144900acf17'
'f2f2e348acd1ccb566e95fa8a561b828'
- 'c6a38a8c8fa24979e6217aed533358ea')
+ '389cc4fa3b459360feaa1b3d93274693'
+ 'ea6a1251be979cb30c6098a28b270d2d'
+ '455f106ce7a4f983975b3a686eaa85e5'
+ '8e7ed39b54968e427f9506e9107bfb45')
diff --git a/abs/extra/samba/__changelog b/abs/extra/samba/__changelog
index 1fdfc4a..bb83999 100644
--- a/abs/extra/samba/__changelog
+++ b/abs/extra/samba/__changelog
@@ -1,4 +1 @@
-remove fam support
-update to 3.5.6
-
-remove libcups as dep and build without it.
+removed fam/gamin
diff --git a/abs/extra/samba/fix-ipv6-mount.patch b/abs/extra/samba/fix-ipv6-mount.patch
deleted file mode 100644
index 89bef65..0000000
--- a/abs/extra/samba/fix-ipv6-mount.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- client/mount.cifs.c.orig 2010-03-03 13:42:02.143936727 +1000
-+++ client/mount.cifs.c 2010-03-04 01:53:22.752879004 +1000
-@@ -1563,7 +1563,7 @@
- }
- }
-
-- if (addr->ai_addr->sa_family == AF_INET6 && addr6->sin6_scope_id) {
-+ if (addr && addr->ai_addr->sa_family == AF_INET6 && addr6->sin6_scope_id) {
- strlcat(options, "%", options_size);
- current_len = strnlen(options, options_size);
- optionstail = options + current_len;
diff --git a/abs/extra/samba/nmbd.service b/abs/extra/samba/nmbd.service
new file mode 100644
index 0000000..6e22ef2
--- /dev/null
+++ b/abs/extra/samba/nmbd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Samba NetBIOS name server
+
+[Service]
+ExecStart=/usr/sbin/nmbd -F
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/extra/samba/samba b/abs/extra/samba/samba
index 1b222d6..6098ee0 100755
--- a/abs/extra/samba/samba
+++ b/abs/extra/samba/samba
@@ -10,9 +10,9 @@ case "$1" in
start)
rc=0
stat_busy "Starting Samba Server"
- if [ ! -x /var/run/samba ] ; then
- install -m755 -g 81 -o 81 -d /var/run/samba
- fi
+ if [ ! -x /var/log/samba ] ; then
+ install -m755 -d /var/log/samba
+ fi
for d in ${SAMBA_DAEMONS[@]}; do
PID=`pidof -o %PPID /usr/sbin/$d`
[ -z "$PID" ] && /usr/sbin/$d -D
@@ -36,9 +36,9 @@ case "$1" in
if [ $rc -gt 0 ]; then
stat_fail
else
- rm /var/run/samba/smbd.pid &>/dev/null
- rm /var/run/samba/nmbd.pid &>/dev/null
- rm /var/run/samba/winbindd.pid &>/dev/null
+ rm /run/samba/smbd.pid &>/dev/null
+ rm /run/samba/nmbd.pid &>/dev/null
+ rm /run/samba/winbindd.pid &>/dev/null
rm_daemon samba
stat_done
fi
diff --git a/abs/extra/samba/samba.conf b/abs/extra/samba/samba.conf
new file mode 100644
index 0000000..c12610d
--- /dev/null
+++ b/abs/extra/samba/samba.conf
@@ -0,0 +1 @@
+D /run/samba 0755 - - -
diff --git a/abs/extra/samba/samba.install b/abs/extra/samba/samba.install
new file mode 100644
index 0000000..d9baeac
--- /dev/null
+++ b/abs/extra/samba/samba.install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+post_install() {
+ systemd-tmpfiles --create /usr/lib/tmpfiles.d/samba.conf
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/samba/samba.logrotate b/abs/extra/samba/samba.logrotate
deleted file mode 100644
index 581f4c3..0000000
--- a/abs/extra/samba/samba.logrotate
+++ /dev/null
@@ -1,9 +0,0 @@
-/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log {
- notifempty
- missingok
- sharedscripts
- copytruncate
- postrotate
- /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true
- endscript
-}
diff --git a/abs/extra/samba/smbd.service b/abs/extra/samba/smbd.service
new file mode 100644
index 0000000..beb9bfa
--- /dev/null
+++ b/abs/extra/samba/smbd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Samba SMB/CIFS server
+
+[Service]
+ExecStart=/usr/sbin/smbd -F
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/extra/samba/winbindd.service b/abs/extra/samba/winbindd.service
new file mode 100644
index 0000000..509c896
--- /dev/null
+++ b/abs/extra/samba/winbindd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Samba Winbind daemon
+
+[Service]
+ExecStart=/usr/sbin/winbindd -F
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/extra/sane/PKGBUILD b/abs/extra/sane/PKGBUILD
new file mode 100644
index 0000000..951a64b
--- /dev/null
+++ b/abs/extra/sane/PKGBUILD
@@ -0,0 +1,72 @@
+# $Id: PKGBUILD 162163 2012-06-22 12:59:38Z dreisner $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Simo L. <neotuli@yahoo.com>
+# Contributor: eric <eric@archlinux.org>
+
+pkgname=sane
+pkgver=1.0.22
+pkgrel=9
+pkgdesc="Scanner Access Now Easy"
+url="http://www.sane-project.org/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libtiff>=4.0.0' 'libgphoto2>=2.4.7-2' 'libjpeg>=8' 'libusb-compat' 'libieee1284' 'v4l-utils' 'avahi' 'bash' 'net-snmp')
+makedepends=('texlive-latexextra')
+install=$pkgname.install
+backup=(etc/sane.d/{abaton.conf,agfafocus.conf,apple.conf,artec.conf,artec_eplus48u.conf,avision.conf,bh.conf,canon.conf,canon630u.conf,canon_dr.conf,canon_pp.conf,cardscan.conf,coolscan2.conf,coolscan3.conf,coolscan.conf,dc25.conf,dc210.conf,dc240.conf,dell1600n_net.conf,dll.conf,dmc.conf,epjitsu.conf,epson.conf,epson2.conf,fujitsu.conf,genesys.conf,gphoto2.conf,gt68xx.conf,hp.conf,hp3900.conf,hp4200.conf,hp5400.conf,hpsj5s.conf,hs2p.conf,ibm.conf,kodak.conf,leo.conf,lexmark.conf,ma1509.conf,magicolor.conf,matsushita.conf,microtek.conf,microtek2.conf,mustek.conf,mustek_pp.conf,mustek_usb.conf,mustek_usb2.conf,nec.conf,net.conf,p5.conf,pie.conf,pixma.conf,plustek.conf,plustek_pp.conf,qcam.conf,ricoh.conf,rts8891.conf,s9036.conf,saned.conf,sceptre.conf,sharp.conf,sm3840.conf,snapscan.conf,sp15c.conf,st400.conf,stv680.conf,tamarack.conf,teco1.conf,teco2.conf,teco3.conf,test.conf,u12.conf,umax.conf,umax1220u.conf,umax_pp.conf,xerox_mfp.conf,v4l.conf} etc/xinetd.d/sane)
+source=(ftp://ftp2.sane-project.org/pub/sane/$pkgname-backends-$pkgver/$pkgname-backends-$pkgver.tar.gz
+ 'sane.xinetd'
+ 'libv4l-0.8.3.patch'
+ 'xerox_mfp_fix_usb_devices.patch'
+ 'saned.socket'
+ 'saned.service')
+options=(!libtool)
+md5sums=('fadf56a60f4776bfb24491f66b617cf5'
+ 'da946cc36fb83612162cf9505986d4b2'
+ 'e645a8921cff9f18ffbdabb2ed885060'
+ 'cfef73e7db7c28308914d3db6767d852'
+ 'e57e9e15528f47f5f1b3f1411135ed5d'
+ 'e44bd4c994a52d6f472463d1eb0a03be')
+
+build() {
+ cd "${srcdir}/${pkgname}-backends-${pkgver}"
+
+ patch -p1 -i "${srcdir}"/libv4l-0.8.3.patch
+ # fix https://bugs.archlinux.org/task/26114
+ patch -Np1 -i "${srcdir}"/xerox_mfp_fix_usb_devices.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-docdir=/usr/share/doc/sane \
+ --enable-avahi \
+ --enable-pthread \
+ --disable-rpath \
+ --disable-locking
+ make
+}
+
+package () {
+ cd "${srcdir}/${pkgname}-backends-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ # fix hp officejets
+ echo "#hpaio" >> "${pkgdir}/etc/sane.d/dll.conf"
+ # install udev files
+ install -D -m0644 tools/udev/libsane.rules \
+ "${pkgdir}/usr/lib/udev/rules.d/53-sane.rules"
+ # fix udev rules
+ sed -i 's|NAME="%k", ||g' "${pkgdir}/usr/lib/udev/rules.d/53-sane.rules"
+
+ # install xinetd file
+ install -D -m644 "${srcdir}/sane.xinetd" "${pkgdir}/etc/xinetd.d/sane"
+
+ # Install the pkg-config file
+ install -D -m644 tools/sane-backends.pc \
+ "${pkgdir}/usr/lib/pkgconfig/sane-backends.pc"
+ # install systemd files
+ install -D -m644 ${srcdir}/saned.socket \
+ "${pkgdir}/usr/lib/systemd/system/saned.socket"
+ install -D -m644 ${srcdir}/saned.service \
+ "${pkgdir}/usr/lib/systemd/system/saned@.service"
+}
diff --git a/abs/extra/sane/libv4l-0.8.3.patch b/abs/extra/sane/libv4l-0.8.3.patch
new file mode 100644
index 0000000..4e240e0
--- /dev/null
+++ b/abs/extra/sane/libv4l-0.8.3.patch
@@ -0,0 +1,64 @@
+From 26c69b228b29f612faf4b0cc85db969ee7cc4ea6 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Mon, 14 Mar 2011 13:35:05 +0100
+Subject: [PATCH] patch: v4l
+
+Squashed commit of the following:
+
+commit 23381932c76846191b42a48e505b37cd74711265
+Author: Julien BLACHE <jb@jblache.org>
+Date: Wed Feb 16 19:37:43 2011 +0100
+
+ Fix v4l build with libv4l 0.8.3+
+
+ (cherry picked from commit c5ca46c2d1be78c651afb843cc834cf2b5b24953)
+
+ Conflicts:
+
+ ChangeLog
+
+ Signed-off-by: Nils Philippsen <nils@redhat.com>
+---
+ backend/v4l.c | 3 +--
+ backend/v4l.h | 3 ++-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/backend/v4l.c b/backend/v4l.c
+index 6510ef0..38595ed 100644
+--- a/backend/v4l.c
++++ b/backend/v4l.c
+@@ -84,9 +84,8 @@
+ #include "../include/sane/sanei_config.h"
+ #define V4L_CONFIG_FILE "v4l.conf"
+
+-#include "v4l.h"
+-
+ #include <libv4l1.h>
++#include "v4l.h"
+
+ static const SANE_Device **devlist = NULL;
+ static int num_devices;
+diff --git a/backend/v4l.h b/backend/v4l.h
+index 588b96e..6aee586 100644
+--- a/backend/v4l.h
++++ b/backend/v4l.h
+@@ -29,6 +29,7 @@
+ #ifndef v4l_h
+ #define v4l_h
+
++#ifndef __LINUX_VIDEODEV_H
+ /* Kernel interface */
+ /* Only the stuff we need. For more features, more defines are needed */
+
+@@ -165,7 +166,7 @@ struct video_channel
+
+
+ /* end of kernel interface */
+-
++#endif /* !__LINUX_VIDEODEV_H */
+
+ #include <../include/sane/sane.h>
+
+--
+1.7.4
+
diff --git a/abs/extra/sane/sane.install b/abs/extra/sane/sane.install
new file mode 100644
index 0000000..5ec361e
--- /dev/null
+++ b/abs/extra/sane/sane.install
@@ -0,0 +1,7 @@
+post_install() {
+ /bin/cat <<THEEND
+NOTE
+----
+Add your user to group 'scanner' to use scanner devices.
+THEEND
+}
diff --git a/abs/extra/sane/sane.xinetd b/abs/extra/sane/sane.xinetd
new file mode 100644
index 0000000..b035664
--- /dev/null
+++ b/abs/extra/sane/sane.xinetd
@@ -0,0 +1,11 @@
+service sane-port
+{
+ port = 6566
+ socket_type = stream
+ wait = no
+ user = root
+ group = scanner
+ server = /usr/sbin/saned
+ # disabled by default!
+ disable = yes
+ }
diff --git a/abs/extra/sane/saned.service b/abs/extra/sane/saned.service
new file mode 100644
index 0000000..69e833e
--- /dev/null
+++ b/abs/extra/sane/saned.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Scanner Service
+
+[Service]
+Group=scanner
+ExecStart=/usr/sbin/saned
+StandardInput=socket
+StandardError=syslog
diff --git a/abs/extra/sane/saned.socket b/abs/extra/sane/saned.socket
new file mode 100644
index 0000000..66ef9c9
--- /dev/null
+++ b/abs/extra/sane/saned.socket
@@ -0,0 +1,9 @@
+[Unit]
+Description=saned incoming socket
+
+[Socket]
+ListenStream=6566
+Accept=yes
+
+[Install]
+WantedBy=sockets.target
diff --git a/abs/extra/sane/xerox_mfp_fix_usb_devices.patch b/abs/extra/sane/xerox_mfp_fix_usb_devices.patch
new file mode 100644
index 0000000..5ed29b9
--- /dev/null
+++ b/abs/extra/sane/xerox_mfp_fix_usb_devices.patch
@@ -0,0 +1,67 @@
+commit 5ea227caeacd504b64eef301e83fa63e0a25b3f7
+Author: Alex Belkin <abc@telekom.ru>
+Date: Tue Mar 8 17:57:19 2011 +0300
+
+ keep usb device by default (correct for bug introduced by tcp sub-backend
+
+diff --git a/backend/xerox_mfp.c b/backend/xerox_mfp.c
+index e08b50f..d4672a7 100644
+--- a/backend/xerox_mfp.c
++++ b/backend/xerox_mfp.c
+@@ -37,10 +37,10 @@
+ static const SANE_Device **devlist = NULL; /* sane_get_devices array */
+ static struct device *devices_head = NULL; /* sane_get_devices list */
+
+-transport available_transports[] = {
++enum { TRANSPORT_USB, TRANSPORT_TCP, TRANSPORTS_MAX };
++transport available_transports[TRANSPORTS_MAX] = {
+ { "usb", usb_dev_request, usb_dev_open, usb_dev_close, usb_configure_device },
+ { "tcp", tcp_dev_request, tcp_dev_open, tcp_dev_close, tcp_configure_device },
+- { 0 }
+ };
+
+ static int resolv_state(int state)
+@@ -824,7 +824,13 @@ free_devices (void)
+ devices_head = NULL;
+ }
+
+-/* SANE API ignores return code of this callback */
++static transport *tr_from_devname(SANE_String_Const devname)
++{
++ if (strncmp("tcp", devname, 3) == 0)
++ return &available_transports[TRANSPORT_TCP];
++ return &available_transports[TRANSPORT_USB];
++}
++
+ static SANE_Status
+ list_one_device (SANE_String_Const devname)
+ {
+@@ -839,12 +845,7 @@ list_one_device (SANE_String_Const devname)
+ return SANE_STATUS_GOOD;
+ }
+
+- for (tr = available_transports; tr->ttype; tr++) {
+- if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
+- break;
+- }
+- if (!tr->ttype)
+- return SANE_STATUS_INVAL;
++ tr = tr_from_devname(devname);
+
+ dev = calloc (1, sizeof (struct device));
+ if (dev == NULL)
+@@ -878,13 +879,7 @@ list_one_device (SANE_String_Const devname)
+ static SANE_Status
+ list_conf_devices (UNUSED (SANEI_Config * config), const char *devname)
+ {
+- transport *tr;
+-
+- for (tr = available_transports; tr->ttype; tr++) {
+- if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
+- return tr->configure_device(devname, list_one_device);
+- }
+- return SANE_STATUS_INVAL;
++ return tr_from_devname(devname)->configure_device(devname, list_one_device);
+ }
+
+ SANE_Status
diff --git a/abs/extra/schroedinger/PKGBUILD b/abs/extra/schroedinger/PKGBUILD
index 0de2d23..7a8e011 100644
--- a/abs/extra/schroedinger/PKGBUILD
+++ b/abs/extra/schroedinger/PKGBUILD
@@ -1,29 +1,29 @@
-# $Id: PKGBUILD 79531 2010-05-04 09:01:27Z ibiru $
+# $Id: PKGBUILD 149308 2012-02-06 18:45:09Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: Timm Preetz <timm@preetz.us>
# Contributor: rabyte <rabyte__gmail>
pkgname=schroedinger
-pkgver=1.0.9
+pkgver=1.0.11
pkgrel=1
pkgdesc="An implemenation of the Dirac video codec in ANSI C code"
arch=('i686' 'x86_64')
url="http://www.diracvideo.org/"
-license=('GPL2' 'LGPL2' 'MPL' 'MIT')
-depends=('orc>=0.4.3')
-makedepends=('pkgconfig')
+license=('GPL2' 'LGPL2.1' 'MPL' 'MIT')
+depends=('orc' 'gcc-libs')
options=(!libtool)
source=(http://www.diracvideo.org/download/schroedinger/$pkgname-$pkgver.tar.gz)
-md5sums=('d67ec48b7c506db8c8b49156bf409e60')
+md5sums=('da6af08e564ca1157348fb8d92efc891')
build() {
- cd $srcdir/$pkgname-$pkgver
-
- export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+ cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr
- make || return 1
- make DESTDIR=$pkgdir install
-
- install -m644 -D COPYING.MIT $pkgdir/usr/share/licenses/$pkgname/COPYING.MIT
+ make
}
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+ install -m644 -D COPYING.MIT "$pkgdir/usr/share/licenses/$pkgname/COPYING.MIT"
+}
diff --git a/abs/extra/scons/PKGBUILD b/abs/extra/scons/PKGBUILD
index edc4fbc..6563bf2 100644
--- a/abs/extra/scons/PKGBUILD
+++ b/abs/extra/scons/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 90304 2010-09-10 14:41:36Z schiv $
+# $Id: PKGBUILD 151216 2012-02-25 08:28:41Z pierre $
# Maintainer: Ray Rashif <schiv@archlinux.org>
# Contributor: damir <damir@archlinux.org>
# Contributor: Lukas Sabota <punkrockguy318@comcast.net>
# Contributor: Brice Carpentier <brice@dlfp.org>
pkgname=scons
-pkgver=2.0.1
-pkgrel=1
+pkgver=2.1.0
+pkgrel=2
pkgdesc="Extensible Python-based build utility"
arch=('any')
url="http://scons.org"
license=('MIT')
depends=('python2')
-source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
-md5sums=('beca648b894cdbf85383fffc79516d18')
+source=("http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz")
+md5sums=('47daf989e303a045b76c11236df719df')
-build() {
+package() {
cd "$srcdir/$pkgname-$pkgver"
python2 setup.py install --standard-lib \
@@ -31,4 +31,3 @@ build() {
}
# vim:set ts=2 sw=2 et:
-
diff --git a/abs/extra/screen/PKGBUILD b/abs/extra/screen/PKGBUILD
index c22d539..3413734 100644
--- a/abs/extra/screen/PKGBUILD
+++ b/abs/extra/screen/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 131720 2011-07-14 01:42:52Z allan $
+# $Id: PKGBUILD 147962 2012-01-29 04:41:21Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# Committer: dorphell <dorphell@gmx.net>
pkgname=screen
pkgver=4.0.3
-pkgrel=12
+pkgrel=13
_ptygroup=5 #the UID of our PTY/TTY group
pkgdesc="Full-screen window manager that multiplexes a physical terminal"
arch=('i686' 'x86_64')
diff --git a/abs/extra/shared-color-profiles/PKGBUILD b/abs/extra/shared-color-profiles/PKGBUILD
new file mode 100644
index 0000000..be2aebe
--- /dev/null
+++ b/abs/extra/shared-color-profiles/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 144380 2011-12-05 12:55:18Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=shared-color-profiles
+pkgver=0.1.5
+pkgrel=1
+pkgdesc="Shared color profiles are used in color management aware applications"
+arch=('any')
+url="http://github.com/hughsie/shared-color-profiles"
+license=('GPL2')
+source=(http://people.freedesktop.org/~hughsient/releases/$pkgname-$pkgver.tar.gz)
+options=('!libtool')
+sha1sums=('621a5bfe7466ab54a6b3e135fdd0580610f61163')
+
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/sip/PKGBUILD b/abs/extra/sip/PKGBUILD
index f50d054..866d89d 100644
--- a/abs/extra/sip/PKGBUILD
+++ b/abs/extra/sip/PKGBUILD
@@ -1,27 +1,26 @@
-# $Id$
-# Maintainer:
-# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# $Id: PKGBUILD 162739 2012-06-29 11:34:13Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
# Contributor: riai <riai@bigfoot.com>, Ben <ben@benmazer.net>
pkgbase=sip
pkgname=('sip' 'python2-sip')
-pkgver=4.13
-pkgrel=1
+pkgver=4.13.3
+pkgrel=2
arch=('i686' 'x86_64')
url="http://www.riverbankcomputing.com/software/sip/"
license=('custom:"sip"')
-makedepends=('python' 'python2')
+makedepends=( 'python2')
source=("http://www.riverbankcomputing.com/static/Downloads/sip4/${pkgbase}-${pkgver}.tar.gz")
-md5sums=('21b4e2cad56e4156df2220143264b8ff')
+md5sums=('76192829cc42ec558db46e4f9e1d8ba9')
build() {
cd "${srcdir}"
cp -r ${pkgbase}-${pkgver} python2-${pkgbase}-${pkgver}
- cd "${srcdir}/${pkgbase}-${pkgver}"
- python configure.py CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}"
- make
+ #cd "${srcdir}/${pkgbase}-${pkgver}"
+ #python configure.py CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}"
+ #make
### Python2 version ###
cd "${srcdir}/python2-${pkgbase}-${pkgver}"
@@ -31,25 +30,36 @@ build() {
package_sip() {
pkgdesc="A tool that makes it easy to create Python bindings for C and C++ libraries"
- depends=('python')
- replaces=('python-sip')
- provides=('python-sip')
+ depends=('glibc')
- cd "${srcdir}/${pkgbase}-${pkgver}"
- make DESTDIR="${pkgdir}" install
+ cd "${srcdir}/python2-${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install -C sipgen
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
+package_python-sip1() {
+ pkgdesc="Python 3.x SIP bindings for C and C++ libraries"
+ depends=('sip' 'python')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install -C siplib
+
+ install -Dm644 sipconfig.py "${pkgdir}"/usr/lib/python3.2/site-packages/sipconfig.py
+ install -Dm644 sipdistutils.py "${pkgdir}"/usr/lib/python3.2/site-packages/sipdistutils.py
+
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
+
package_python2-sip() {
- pkgdesc="A tool that makes it easy to create Python2 bindings for C and C++ libraries"
+ pkgdesc="Python 2.x SIP bindings for C and C++ libraries"
depends=('sip' 'python2')
cd "${srcdir}/python2-${pkgbase}-${pkgver}"
- make DESTDIR="${pkgdir}" install
-
+ make DESTDIR="${pkgdir}" install -C siplib
+
+ install -Dm644 sipconfig.py "${pkgdir}"/usr/lib/python2.7/site-packages/sipconfig.py
+ install -Dm644 sipdistutils.py "${pkgdir}"/usr/lib/python2.7/site-packages/sipdistutils.py
+
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-
- # Provided by sip
- rm "${pkgdir}/usr/bin/sip"
}
diff --git a/abs/extra/sip/__changelog b/abs/extra/sip/__changelog
new file mode 100644
index 0000000..9731eb3
--- /dev/null
+++ b/abs/extra/sip/__changelog
@@ -0,0 +1 @@
+removed python3
diff --git a/abs/extra/speex/PKGBUILD b/abs/extra/speex/PKGBUILD
index aac6749..7bf7e7b 100644
--- a/abs/extra/speex/PKGBUILD
+++ b/abs/extra/speex/PKGBUILD
@@ -1,25 +1,28 @@
-# $Id: PKGBUILD 7445 2008-08-02 03:05:20Z eduardo $
+# $Id: PKGBUILD 137583 2011-09-09 22:58:20Z allan $
+# Maintainer:
# Contributer: Jason Chu <jason@archlinux.org>
-# Maintainer: Jason Chu <jason@archlinux.org>
pkgname=speex
pkgver=1.2rc1
-pkgrel=1
+pkgrel=2
pkgdesc="A free codec for free speech"
arch=('i686' 'x86_64')
+url="http://www.speex.org/"
license=('BSD')
depends=('libogg')
+options=('!libtool')
source=(http://downloads.us.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
md5sums=('c4438b22c08e5811ff10e2b06ee9b9ae')
-url="http://www.speex.org/"
build() {
- cd $startdir/src/speex-$pkgver
- ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
- make || return 1
- make DESTDIR=$startdir/pkg install
- #to fix kde detection
- cp $startdir/pkg/usr/include/speex/* $startdir/pkg/usr/include/
- #libtoolslay
- find $startdir/pkg -name '*.la' -exec rm {} \;
+ cd $srcdir/speex-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd $srcdir/speex-$pkgver
+ make DESTDIR=$startdir/pkg install
+
+ install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
}
diff --git a/abs/extra/sqlite/PKGBUILD b/abs/extra/sqlite/PKGBUILD
new file mode 100644
index 0000000..062789e
--- /dev/null
+++ b/abs/extra/sqlite/PKGBUILD
@@ -0,0 +1,93 @@
+# $Id: PKGBUILD 161621 2012-06-12 15:12:59Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgbase="sqlite"
+pkgname=('sqlite' 'sqlite-tcl' 'sqlite-doc')
+_amalgamationver=3071300
+_amalgamationver2=${_amalgamationver/00/}
+_docver=${_amalgamationver} #3070700
+#pkgver=${_amalgamationver2//0/.}
+pkgver=3.7.13
+pkgrel=1
+pkgdesc="A C library that implements an SQL database engine"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.sqlite.org/"
+makedepends=('tcl' 'readline')
+source=( # tarball containing the amalgamation for SQLite >= 3.7.5 together with a configure script and makefile for building it; includes now also the Tcl Extension Architecture (TEA)
+ http://www.sqlite.org/sqlite-autoconf-$_amalgamationver.tar.gz
+ #http://www.sqlite.org/sqlite-doc-${_amalgamationver}.zip
+ http://www.sqlite.org/sqlite-doc-${_docver}.zip
+ license.txt)
+options=('!libtool' '!emptydirs')
+md5sums=('c97df403e8a3d5b67bb408fcd6aabd8e'
+ '16a003d5a619a6c725e3d81cf5aaba2a'
+ 'c1cdbc5544034d9012e421e75a5e4890')
+
+build() {
+ export CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_SECURE_DELETE"
+
+ # build sqlite
+ cd "$srcdir"/sqlite-autoconf-$_amalgamationver
+ ./configure --prefix=/usr \
+ --disable-static
+ make
+
+ # build the tcl extension
+ cd "$srcdir"/sqlite-autoconf-$_amalgamationver/tea
+ ./configure --prefix=/usr \
+ --with-system-sqlite
+ make
+
+}
+
+package_sqlite() {
+
+ pkgdesc="A C library that implements an SQL database engine"
+ depends=('readline')
+ provides=("sqlite3=$pkgver")
+ replaces=("sqlite3")
+
+ cd ${srcdir}/sqlite-autoconf-$_amalgamationver
+ make DESTDIR=${pkgdir} install
+
+ # license
+ install -D -m644 ${srcdir}/license.txt ${pkgdir}/usr/share/licenses/${pkgname}/license.txt
+}
+
+package_sqlite-tcl() {
+
+ pkgdesc="sqlite Tcl Extension Architecture (TEA)"
+ depends=('sqlite')
+ provides=("sqlite3-tcl=$pkgver")
+ replaces=("sqlite3-tcl")
+
+ cd ${srcdir}/sqlite-autoconf-$_amalgamationver/tea
+ make DESTDIR=${pkgdir} install
+}
+
+package_sqlite-doc() {
+
+ pkgdesc="most of the static HTML files that comprise this website, including all of the SQL Syntax and the C/C++ interface specs and other miscellaneous documentation"
+ #arch=('any') - not yet supported
+ provides=("sqlite3-doc=$pkgver")
+ replaces=("sqlite3-doc")
+
+ #cd ${srcdir}/sqlite-doc-${_amalgamationver}
+ cd ${srcdir}/sqlite-doc-${_docver}
+ mkdir -p ${pkgdir}/usr/share/doc/${pkgbase}
+ cp -R * ${pkgdir}/usr/share/doc/${pkgbase}/
+
+ # fix permissions and remove obsolete files; https://bugs.archlinux.org/task/24605
+ find ${pkgdir} -type f -perm 755 -exec ls -lha {} \;
+ find ${pkgdir} -type f -perm 755 -exec chmod 644 {} \;
+
+ find ${pkgdir} -type f -name '*~' -exec ls -lha {} \;
+ find ${pkgdir} -type d -name '*~' -exec ls -lha {} \;
+ find ${pkgdir} -name '*~' -exec rm -f {} \;
+
+ find ${pkgdir} -type f -name '.~*' -exec ls -lha {} \; # /build/pkg/sqlite-doc/usr/share/doc/sqlite/images/fileformat/.~lock.indexpage.odg#
+ find ${pkgdir} -type d -name '.~*' -exec ls -lha {} \;
+ find ${pkgdir} -name '.~*' -exec rm -f {} \;
+}
diff --git a/abs/extra/sqlite/license.txt b/abs/extra/sqlite/license.txt
new file mode 100644
index 0000000..118c5d5
--- /dev/null
+++ b/abs/extra/sqlite/license.txt
@@ -0,0 +1,33 @@
+SQLite Copyright
+SQLite is in the
+Public Domain
+
+
+All of the deliverable code in SQLite has been dedicated to the public domain by the authors. All code authors, and representatives of the companies they work for, have signed affidavits dedicating their contributions to the public domain and originals of those signed affidavits are stored in a firesafe at the main offices of Hwaci. Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original SQLite code, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
+
+The previous paragraph applies to the deliverable code in SQLite - those parts of the SQLite library that you actually bundle and ship with a larger application. Portions of the documentation and some code used as part of the build process might fall under other licenses. The details here are unclear. We do not worry about the licensing of the documentation and build code so much because none of these things are part of the core deliverable SQLite library.
+
+All of the deliverable code in SQLite has been written from scratch. No code has been taken from other projects or from the open internet. Every line of code can be traced back to its original author, and all of those authors have public domain dedications on file. So the SQLite code base is clean and is uncontaminated with licensed code from other projects.
+Obtaining An Explicit License To Use SQLite
+
+Even though SQLite is in the public domain and does not require a license, some users want to obtain a license anyway. Some reasons for obtaining a license include:
+You are using SQLite in a jurisdiction that does not recognize the public domain.
+You are using SQLite in a jurisdiction that does not recognize the right of an author to dedicate their work to the public domain.
+You want to hold a tangible legal document as evidence that you have the legal right to use and distribute SQLite.
+Your legal department tells you that you have to purchase a license.
+
+If you feel like you really have to purchase a license for SQLite, Hwaci, the company that employs the architect and principal developers of SQLite, will sell you one.
+Contributed Code
+
+In order to keep SQLite completely free and unencumbered by copyright, all new contributors to the SQLite code base are asked to dedicate their contributions to the public domain. If you want to send a patch or enhancement for possible inclusion in the SQLite source tree, please accompany the patch with the following statement:
+The author or authors of this code dedicate any and all copyright interest in this code to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this code under copyright law.
+
+We are not able to accept patches or changes to SQLite that are not accompanied by a statement such as the above. In addition, if you make changes or enhancements as an employee, then a simple statement such as the above is insufficient. You must also send by surface mail a copyright release signed by a company officer. A signed original of the copyright release should be mailed to:
+Hwaci
+6200 Maple Cove Lane
+Charlotte, NC 28269
+USA
+
+A template copyright release is available in PDF or HTML. You can use this release to make future changes.
+
+see http://www.sqlite.org/copyright.html \ No newline at end of file
diff --git a/abs/extra/strace/PKGBUILD b/abs/extra/strace/PKGBUILD
index 5a33af7..30a93a6 100644
--- a/abs/extra/strace/PKGBUILD
+++ b/abs/extra/strace/PKGBUILD
@@ -1,27 +1,28 @@
-# $Id$
+# $Id: PKGBUILD 158298 2012-05-03 15:18:30Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=strace
-pkgver=4.6
+pkgver=4.7
pkgrel=1
pkgdesc="A useful diagnositic, instructional, and debugging tool"
arch=('i686' 'x86_64')
url="http://sourceforge.net/projects/strace/"
license=('custom')
depends=('perl')
-source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-$pkgver.tar.xz)
-md5sums=('e537b2b1afeec70c0e6e27a0d0fd671e')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-$pkgver.tar.xz")
+md5sums=('6054c3880a00c6703f83b57f15e04642')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+
./configure --prefix=/usr
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}/" install
- install -Dm644 COPYRIGHT ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ make DESTDIR="${pkgdir}/" install
+ install -Dm644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
diff --git a/abs/extra/subversion/PKGBUILD b/abs/extra/subversion/PKGBUILD
index 6e7efe0..0086102 100644
--- a/abs/extra/subversion/PKGBUILD
+++ b/abs/extra/subversion/PKGBUILD
@@ -1,92 +1,81 @@
-# $Id: PKGBUILD 98016 2010-11-03 03:22:18Z paul $
-# Maintainer: Paul Mattal <paul@archlinux.org>
+# $Id: PKGBUILD 160577 2012-06-02 10:29:00Z bluewind $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Paul Mattal <paul@archlinux.org>
# Contributor: Jason Chu <jason@archlinux.org>
pkgname=subversion
-pkgver=1.6.13
-pkgrel=4
-pkgdesc="Replacement for CVS, another versioning system (SVN)"
+pkgver=1.7.5
+pkgrel=2
+pkgdesc="A Modern Concurrent Version Control System"
arch=('i686' 'x86_64')
-license=('apache' 'bsd')
-depends=('neon' 'apr-util')
-makedepends=('heimdal' 'apache' 'python2' 'perl' 'swig' 'ruby' 'jdk'
- 'autoconf' 'sqlite3' 'db' 'e2fsprogs' )
-source=(http://subversion.tigris.org/downloads/$pkgname-$pkgver.tar.bz2
- svnserve svn svnserve.conf svnmerge.py
- subversion.rpath.fix.patch
- subversion.suppress.deprecation.warnings.patch)
+license=('APACHE')
+depends=('neon' 'apr-util' 'sqlite' 'file')
+#optdepends=('libgnome-keyring' 'kdeutils-kwallet' 'bash-completion: for svn bash completion' \
+optdepends=('bash-completion: for svn bash completion' \
+ 'python2: for some hook scripts')
+makedepends=('krb5' 'apache' 'python2' 'perl' 'swig' 'autoconf' 'db' 'e2fsprogs')
backup=('etc/xinetd.d/svn' 'etc/conf.d/svnserve')
+
url="http://subversion.apache.org/"
provides=('svn')
-options=('!makeflags' '!libtool')
-optdepends=('libgnome-keyring' 'kdeutils-kwallet' 'bash-completion: for svn bash completion')
+options=('!makeflags' '!libtool' '!emptydirs')
+source=(http://apache.mirror.rafal.ca/subversion/$pkgname-$pkgver.tar.bz2{,.asc}
+ svnserve svn svnserve.conf subversion.rpath.fix.patch)
+sha1sums=('05c079762690d5ac1ccd2549742e7ef70fa45cf1'
+ 'b267cba19b4f56360657a5bf5b231950e027a45a'
+ '64ba3e6ebafc08ac62f59d788f7a825fdce69573'
+ '73b36c046c09cec2093354911c89e3ba8056af6c'
+ 'ad117bf3b2a838a9a678a93fd8db1a066ad46c41'
+ '3d1e28408a9abb42af2e531adc0d01ce21acfad6')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
-
+ cd "${srcdir}/${pkgname}-${pkgver}"
export PYTHON=/usr/bin/python2
- # apply patches
- patch -p0 < $srcdir/subversion.rpath.fix.patch
- patch -p1 -i $srcdir/subversion.suppress.deprecation.warnings.patch
+ patch -p0 -i ../subversion.rpath.fix.patch
+ sed -i 's|/usr/bin/env python|/usr/bin/env python2|' tools/hook-scripts/{,mailer/{,tests/}}*.py
- # configure
- autoreconf
./configure --prefix=/usr --with-apr=/usr --with-apr-util=/usr \
- --with-zlib=/usr --with-neon=/usr --with-sqlite=/usr \
- --enable-javahl --without-gnome-keyring --with-apxs \
- --with-sqlite=/usr --with-jdk
-
- # build
- (make external-all && make LT_LDFLAGS="-L$Fdestdir/usr/lib" local-all )
+ --with-zlib=/usr --with-neon=/usr --with-apxs \
+ --with-sqlite=/usr --with-berkeley-db=:/usr/include/:/usr/lib:db-5.3
+# --enable-javahl --with-gnome-keyring --with-kwallet
+
+ make external-all
+ make LT_LDFLAGS="-L$Fdestdir/usr/lib" local-all
+ make swig_pydir=/usr/lib/python2.7/site-packages/libsvn \
+ swig_pydir_extra=/usr/lib/python2.7/site-packages/svn swig-py swig-pl #javahl # swig-rb
}
-package() {
- cd ${srcdir}/${pkgname}-${pkgver}
-
- # install
- export LD_LIBRARY_PATH=${pkgdir}/usr/lib:$LD_LIBRARY_PATH
- make DESTDIR=${pkgdir} install
-
- make DESTDIR=${pkgdir} swig-py
- make install-swig-py DESTDIR=${pkgdir}
-
- install -d ${pkgdir}/usr/lib/python2.7
- mv ${pkgdir}/usr/lib/svn-python/ ${pkgdir}/usr/lib/python2.7/site-packages
+#check() {
+# cd "${srcdir}/${pkgname}-${pkgver}"
+# export LANG=C LC_ALL=C
+# make check check-swig-pl check-swig-py check-javahl CLEANUP=yes # check-swig-rb
+#}
- install -d ${pkgdir}/usr/share/subversion
- install -d -m 755 tools/hook-scripts ${pkgdir}/usr/share/subversion/
- rm -f ${pkgdir}/usr/share/subversion/hook-scripts/*.in
-
- make DESTDIR=${pkgdir} swig-pl
- make install-swig-pl DESTDIR=${pkgdir} INSTALLDIRS=vendor
- rm -f ${pkgdir}/usr/lib/perl5/vendor_perl/auto/SVN/_Core/.packlist
- rm -rf ${pkgdir}/usr/lib/perl5/core_perl
-
- make DESTDIR=${pkgdir} swig-rb
- make install-swig-rb DESTDIR=${pkgdir}
-
- make DESTDIR=${pkgdir} javahl
- make DESTDIR=${pkgdir} install-javahl
-
- install -d ${pkgdir}/etc/{rc.d,xinetd.d,conf.d}
-
- install -m 755 ${srcdir}/svnserve ${pkgdir}/etc/rc.d
- install -m 644 ${srcdir}/svn ${pkgdir}/etc/xinetd.d
- install -m 644 ${srcdir}/svnserve.conf ${pkgdir}/etc/conf.d/svnserve
- install -m 755 ${srcdir}/svnmerge.py ${pkgdir}/usr/bin/svnmerge
- install -D -m 644 ${srcdir}/subversion-$pkgver/COPYING \
- ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
-
- # bash completion
- install -Dm 644 ${srcdir}/${pkgname}-${pkgver}/tools/client-side/bash_completion \
- ${pkgdir}/etc/bash_completion.d/subversion
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ export LD_LIBRARY_PATH="${pkgdir}"/usr/lib:${LD_LIBRARY_PATH}
+ make DESTDIR="${pkgdir}" INSTALLDIRS=vendor \
+ swig_pydir=/usr/lib/python2.7/site-packages/libsvn \
+ swig_pydir_extra=/usr/lib/python2.7/site-packages/svn \
+ install install-swig-py install-swig-pl #install-javahl # install-swig-rb
+
+ install -d "${pkgdir}"/usr/share/subversion
+ cp -a tools/hook-scripts "${pkgdir}"/usr/share/subversion/
+ rm "${pkgdir}"/usr/share/subversion/hook-scripts/*.in
+
+ rm "${pkgdir}"/usr/lib/perl5/vendor_perl/auto/SVN/_Core/.packlist
+ rm -r "${pkgdir}"/usr/lib/perl5/core_perl
+
+ install -D -m 755 "${srcdir}"/svnserve "${pkgdir}"/etc/rc.d/svnserve
+ install -D -m 644 "${srcdir}"/svn "${pkgdir}"/etc/xinetd.d/svn
+ install -D -m 644 "${srcdir}"/svnserve.conf "${pkgdir}"/etc/conf.d/svnserve
+
+ install -Dm 644 tools/client-side/bash_completion \
+ "${pkgdir}"/usr/share/bash-completion/completions/subversion
+ for i in svn svnadmin svndumpfilter svnlook svnsync svnversion; do
+ ln -sf subversion "${pkgdir}"/usr/share/bash-completion/completions/${i}
+ done
}
-md5sums=('7ae1c827689f21cf975804005be30aeb'
- 'a2b029e8385007ffb99b437b30521c90'
- 'a0db6dd43af33952739b6ec089852630'
- 'c459e299192552f61578f3438abf0664'
- 'a6371baeda7e224504629ecdda2749b4'
- '6b4340ba9d8845cd8497e013ae01be3f'
- '1166f3b7413d7e7450299b3525680bbe')
diff --git a/abs/extra/subversion/__changelog b/abs/extra/subversion/__changelog
new file mode 100644
index 0000000..24ce429
--- /dev/null
+++ b/abs/extra/subversion/__changelog
@@ -0,0 +1 @@
+remove java,kdelibs , libgnome
diff --git a/abs/extra/subversion/subversion.suppress.deprecation.warnings.patch b/abs/extra/subversion/subversion.suppress.deprecation.warnings.patch
deleted file mode 100644
index 94ce89b..0000000
--- a/abs/extra/subversion/subversion.suppress.deprecation.warnings.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -urN subversion-1.6.9/subversion/bindings/swig/python/svn/core.py subversion-1.6.9-fixed/subversion/bindings/swig/python/svn/core.py
---- subversion-1.6.9/subversion/bindings/swig/python/svn/core.py 2009-02-13 11:22:26.000000000 -0500
-+++ subversion-1.6.9-fixed/subversion/bindings/swig/python/svn/core.py 2010-02-08 07:46:29.000000000 -0500
-@@ -19,6 +19,7 @@
- from libsvn.core import *
- import libsvn.core as _libsvncore
- import atexit as _atexit
-+import warnings
-
- class SubversionException(Exception):
- def __init__(self, message=None, apr_err=None, child=None,
-@@ -44,7 +45,9 @@
- Exception.__init__(self, *args)
-
- self.apr_err = apr_err
-- self.message = message
-+ with warnings.catch_warnings():
-+ warnings.simplefilter("ignore", DeprecationWarning)
-+ self.message = message
- self.child = child
- self.file = file
- self.line = line
diff --git a/abs/extra/subversion/svnmerge.py b/abs/extra/subversion/svnmerge.py
deleted file mode 100644
index d893164..0000000
--- a/abs/extra/subversion/svnmerge.py
+++ /dev/null
@@ -1,2370 +0,0 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
-# Copyright (c) 2005, Giovanni Bajo
-# Copyright (c) 2004-2005, Awarix, Inc.
-# All rights reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-#
-# Author: Archie Cobbs <archie at awarix dot com>
-# Rewritten in Python by: Giovanni Bajo <rasky at develer dot com>
-#
-# Acknowledgments:
-# John Belmonte <john at neggie dot net> - metadata and usability
-# improvements
-# Blair Zajac <blair at orcaware dot com> - random improvements
-# Raman Gupta <rocketraman at fastmail dot fm> - bidirectional and transitive
-# merging support
-# Dustin J. Mitchell <dustin at zmanda dot com> - support for multiple
-# location identifier formats
-#
-# $HeadURL$
-# $LastChangedDate$
-# $LastChangedBy$
-# $LastChangedRevision$
-#
-# Requisites:
-# svnmerge.py has been tested with all SVN major versions since 1.1 (both
-# client and server). It is unknown if it works with previous versions.
-#
-# Differences from svnmerge.sh:
-# - More portable: tested as working in FreeBSD and OS/2.
-# - Add double-verbose mode, which shows every svn command executed (-v -v).
-# - "svnmerge avail" now only shows commits in source, not also commits in
-# other parts of the repository.
-# - Add "svnmerge block" to flag some revisions as blocked, so that
-# they will not show up anymore in the available list. Added also
-# the complementary "svnmerge unblock".
-# - "svnmerge avail" has grown two new options:
-# -B to display a list of the blocked revisions
-# -A to display both the blocked and the available revisions.
-# - Improved generated commit message to make it machine parsable even when
-# merging commits which are themselves merges.
-# - Add --force option to skip working copy check
-# - Add --record-only option to "svnmerge merge" to avoid performing
-# an actual merge, yet record that a merge happened.
-# - Can use a variety of location-identifier formats
-#
-# TODO:
-# - Add "svnmerge avail -R": show logs in reverse order
-#
-# Information for Hackers:
-#
-# Identifiers for branches:
-# A branch is identified in three ways within this source:
-# - as a working copy (variable name usually includes 'dir')
-# - as a fully qualified URL
-# - as a path identifier (an opaque string indicating a particular path
-# in a particular repository; variable name includes 'pathid')
-# A "target" is generally user-specified, and may be a working copy or
-# a URL.
-
-import sys, os, getopt, re, types, tempfile, time, locale
-from bisect import bisect
-from xml.dom import pulldom
-
-NAME = "svnmerge"
-if not hasattr(sys, "version_info") or sys.version_info < (2, 0):
- error("requires Python 2.0 or newer")
-
-# Set up the separator used to separate individual log messages from
-# each revision merged into the target location. Also, create a
-# regular expression that will find this same separator in already
-# committed log messages, so that the separator used for this run of
-# svnmerge.py will have one more LOG_SEPARATOR appended to the longest
-# separator found in all the commits.
-LOG_SEPARATOR = 8 * '.'
-LOG_SEPARATOR_RE = re.compile('^((%s)+)' % re.escape(LOG_SEPARATOR),
- re.MULTILINE)
-
-# Each line of the embedded log messages will be prefixed by LOG_LINE_PREFIX.
-LOG_LINE_PREFIX = 2 * ' '
-
-# Set python to the default locale as per environment settings, same as svn
-# TODO we should really parse config and if log-encoding is specified, set
-# the locale to match that encoding
-locale.setlocale(locale.LC_ALL, '')
-
-# We want the svn output (such as svn info) to be non-localized
-# Using LC_MESSAGES should not affect localized output of svn log, for example
-if os.environ.has_key("LC_ALL"):
- del os.environ["LC_ALL"]
-os.environ["LC_MESSAGES"] = "C"
-
-###############################################################################
-# Support for older Python versions
-###############################################################################
-
-# True/False constants are Python 2.2+
-try:
- True, False
-except NameError:
- True, False = 1, 0
-
-def lstrip(s, ch):
- """Replacement for str.lstrip (support for arbitrary chars to strip was
- added in Python 2.2.2)."""
- i = 0
- try:
- while s[i] == ch:
- i = i+1
- return s[i:]
- except IndexError:
- return ""
-
-def rstrip(s, ch):
- """Replacement for str.rstrip (support for arbitrary chars to strip was
- added in Python 2.2.2)."""
- try:
- if s[-1] != ch:
- return s
- i = -2
- while s[i] == ch:
- i = i-1
- return s[:i+1]
- except IndexError:
- return ""
-
-def strip(s, ch):
- """Replacement for str.strip (support for arbitrary chars to strip was
- added in Python 2.2.2)."""
- return lstrip(rstrip(s, ch), ch)
-
-def rsplit(s, sep, maxsplits=0):
- """Like str.rsplit, which is Python 2.4+ only."""
- L = s.split(sep)
- if not 0 < maxsplits <= len(L):
- return L
- return [sep.join(L[0:-maxsplits])] + L[-maxsplits:]
-
-###############################################################################
-
-def kwextract(s):
- """Extract info from a svn keyword string."""
- try:
- return strip(s, "$").strip().split(": ")[1]
- except IndexError:
- return "<unknown>"
-
-__revision__ = kwextract('$Rev$')
-__date__ = kwextract('$Date$')
-
-# Additional options, not (yet?) mapped to command line flags
-default_opts = {
- "svn": "svn",
- "prop": NAME + "-integrated",
- "block-prop": NAME + "-blocked",
- "commit-verbose": True,
- "verbose": 0,
-}
-logs = {}
-
-def console_width():
- """Get the width of the console screen (if any)."""
- try:
- return int(os.environ["COLUMNS"])
- except (KeyError, ValueError):
- pass
-
- try:
- # Call the Windows API (requires ctypes library)
- from ctypes import windll, create_string_buffer
- h = windll.kernel32.GetStdHandle(-11)
- csbi = create_string_buffer(22)
- res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)
- if res:
- import struct
- (bufx, bufy,
- curx, cury, wattr,
- left, top, right, bottom,
- maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
- return right - left + 1
- except ImportError:
- pass
-
- # Parse the output of stty -a
- if os.isatty(1):
- out = os.popen("stty -a").read()
- m = re.search(r"columns (\d+);", out)
- if m:
- return int(m.group(1))
-
- # sensible default
- return 80
-
-def error(s):
- """Subroutine to output an error and bail."""
- print >> sys.stderr, "%s: %s" % (NAME, s)
- sys.exit(1)
-
-def report(s):
- """Subroutine to output progress message, unless in quiet mode."""
- if opts["verbose"]:
- print "%s: %s" % (NAME, s)
-
-def prefix_lines(prefix, lines):
- """Given a string representing one or more lines of text, insert the
- specified prefix at the beginning of each line, and return the result.
- The input must be terminated by a newline."""
- assert lines[-1] == "\n"
- return prefix + lines[:-1].replace("\n", "\n"+prefix) + "\n"
-
-def recode_stdout_to_file(s):
- if locale.getdefaultlocale()[1] is None or not hasattr(sys.stdout, "encoding") \
- or sys.stdout.encoding is None:
- return s
- u = s.decode(sys.stdout.encoding)
- return u.encode(locale.getdefaultlocale()[1])
-
-class LaunchError(Exception):
- """Signal a failure in execution of an external command. Parameters are the
- exit code of the process, the original command line, and the output of the
- command."""
-
-try:
- """Launch a sub-process. Return its output (both stdout and stderr),
- optionally split by lines (if split_lines is True). Raise a LaunchError
- exception if the exit code of the process is non-zero (failure).
-
- This function has two implementations, one based on subprocess (preferred),
- and one based on popen (for compatibility).
- """
- import subprocess
- import shlex
-
- def launch(cmd, split_lines=True):
- # Requiring python 2.4 or higher, on some platforms we get
- # much faster performance from the subprocess module (where python
- # doesn't try to close an exhorbitant number of file descriptors)
- stdout = ""
- stderr = ""
- try:
- if os.name == 'nt':
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, \
- close_fds=False, stderr=subprocess.PIPE)
- else:
- # Use shlex to break up the parameters intelligently,
- # respecting quotes. shlex can't handle unicode.
- args = shlex.split(cmd.encode('ascii'))
- p = subprocess.Popen(args, stdout=subprocess.PIPE, \
- close_fds=False, stderr=subprocess.PIPE)
- stdoutAndErr = p.communicate()
- stdout = stdoutAndErr[0]
- stderr = stdoutAndErr[1]
- except OSError, inst:
- # Using 1 as failure code; should get actual number somehow? For
- # examples see svnmerge_test.py's TestCase_launch.test_failure and
- # TestCase_launch.test_failurecode.
- raise LaunchError(1, cmd, stdout + " " + stderr + ": " + str(inst))
-
- if p.returncode == 0:
- if split_lines:
- # Setting keepends=True for compatibility with previous logic
- # (where file.readlines() preserves newlines)
- return stdout.splitlines(True)
- else:
- return stdout
- else:
- raise LaunchError(p.returncode, cmd, stdout + stderr)
-except ImportError:
- # support versions of python before 2.4 (slower on some systems)
- def launch(cmd, split_lines=True):
- if os.name not in ['nt', 'os2']:
- import popen2
- p = popen2.Popen4(cmd)
- p.tochild.close()
- if split_lines:
- out = p.fromchild.readlines()
- else:
- out = p.fromchild.read()
- ret = p.wait()
- if ret == 0:
- ret = None
- else:
- ret >>= 8
- else:
- i,k = os.popen4(cmd)
- i.close()
- if split_lines:
- out = k.readlines()
- else:
- out = k.read()
- ret = k.close()
-
- if ret is None:
- return out
- raise LaunchError(ret, cmd, out)
-
-def launchsvn(s, show=False, pretend=False, **kwargs):
- """Launch SVN and grab its output."""
- username = password = configdir = ""
- if opts.get("username", None):
- username = "--username=" + opts["username"]
- if opts.get("password", None):
- password = "--password=" + opts["password"]
- if opts.get("config-dir", None):
- configdir = "--config-dir=" + opts["config-dir"]
- cmd = ' '.join(filter(None, [opts["svn"], "--non-interactive",
- username, password, configdir, s]))
- if show or opts["verbose"] >= 2:
- print cmd
- if pretend:
- return None
- return launch(cmd, **kwargs)
-
-def svn_command(s):
- """Do (or pretend to do) an SVN command."""
- out = launchsvn(s, show=opts["show-changes"] or opts["dry-run"],
- pretend=opts["dry-run"],
- split_lines=False)
- if not opts["dry-run"]:
- print out
-
-def check_dir_clean(dir):
- """Check the current status of dir for local mods."""
- if opts["force"]:
- report('skipping status check because of --force')
- return
- report('checking status of "%s"' % dir)
-
- # Checking with -q does not show unversioned files or external
- # directories. Though it displays a debug message for external
- # directories, after a blank line. So, practically, the first line
- # matters: if it's non-empty there is a modification.
- out = launchsvn("status -q %s" % dir)
- if out and out[0].strip():
- error('"%s" has local modifications; it must be clean' % dir)
-
-class PathIdentifier:
- """Abstraction for a path identifier, so that we can start talking
- about it before we know the form that it takes in the properties (its
- external_form). Objects are referenced in the class variable 'locobjs',
- keyed by all known forms."""
-
- # a map of UUID (or None) to repository root URL.
- repo_hints = {}
-
- # a map from any known string form to the corresponding PathIdentifier
- locobjs = {}
-
- def __init__(self, repo_relative_path, uuid=None, url=None, external_form=None):
- self.repo_relative_path = repo_relative_path
- self.uuid = uuid
- self.url = url
- self.external_form = external_form
-
- def __repr__(self):
- return "<PathIdentifier " + ', '.join('%s=%r' % i for i in self.__dict__.items()) + '>'
-
- def __str__(self):
- """Return a printable string representation"""
- if self.external_form:
- return self.external_form
- if self.url:
- return self.format('url')
- if self.uuid:
- return self.format('uuid')
- return self.format('path')
-
- def from_pathid(pathid_str):
- """convert pathid_str to a PathIdentifier"""
- if not PathIdentifier.locobjs.has_key(pathid_str):
- if is_url(pathid_str):
- # we can determine every form; PathIdentifier.hint knows how to do that
- PathIdentifier.hint(pathid_str)
- elif pathid_str[:7] == 'uuid://':
- mo = re.match('uuid://([^/]*)(.*)', pathid_str)
- if not mo:
- error("Invalid path identifier '%s'" % pathid_str)
- uuid, repo_relative_path = mo.groups()
- pathid = PathIdentifier(repo_relative_path, uuid=uuid)
- # we can cache this by uuid:// pathid and by repo-relative path
- PathIdentifier.locobjs[pathid_str] = PathIdentifier.locobjs[repo_relative_path] = pathid
- elif pathid_str and pathid_str[0] == '/':
- # strip any trailing slashes
- pathid_str = pathid_str.rstrip('/')
- pathid = PathIdentifier(repo_relative_path=pathid_str)
- # we can only cache this by repo-relative path
- PathIdentifier.locobjs[pathid_str] = pathid
- else:
- error("Invalid path identifier '%s'" % pathid_str)
- return PathIdentifier.locobjs[pathid_str]
- from_pathid = staticmethod(from_pathid)
-
- def from_target(target):
- """Convert a target (either a working copy path or an URL) into a
- path identifier."""
- # prime the cache first if we don't know about this target yet
- if not PathIdentifier.locobjs.has_key(target):
- PathIdentifier.hint(target)
-
- try:
- return PathIdentifier.locobjs[target]
- except KeyError:
- error("Could not recognize path identifier '%s'" % target)
- from_target = staticmethod(from_target)
-
- def hint(target):
- """Cache some information about target, as it may be referenced by
- repo-relative path in subversion properties; the cache can help to
- expand such a relative path to a full path identifier."""
- if PathIdentifier.locobjs.has_key(target): return
- if not is_url(target) and not is_wc(target): return
-
- url = target_to_url(target)
-
- root = get_repo_root(url)
- assert root[-1] != "/"
- assert url[:len(root)] == root, "url=%r, root=%r" % (url, root)
- repo_relative_path = url[len(root):]
-
- try:
- uuid = get_svninfo(target)['Repository UUID']
- uuid_pathid = 'uuid://%s%s' % (uuid, repo_relative_path)
- except KeyError:
- uuid = None
- uuid_pathid = None
-
- locobj = PathIdentifier.locobjs.get(url) or \
- (uuid_pathid and PathIdentifier.locobjs.get(uuid_pathid))
- if not locobj:
- locobj = PathIdentifier(repo_relative_path, uuid=uuid, url=url)
-
- PathIdentifier.repo_hints[uuid] = root # (uuid may be None)
-
- PathIdentifier.locobjs[target] = locobj
- PathIdentifier.locobjs[url] = locobj
- if uuid_pathid:
- PathIdentifier.locobjs[uuid_pathid] = locobj
- if not PathIdentifier.locobjs.has_key(repo_relative_path):
- PathIdentifier.locobjs[repo_relative_path] = locobj
- hint = staticmethod(hint)
-
- def format(self, fmt):
- if fmt == 'path':
- return self.repo_relative_path
- elif fmt == 'uuid':
- return "uuid://%s%s" % (self.uuid, self.repo_relative_path)
- elif fmt == 'url':
- return self.url
- else:
- error("Unkonwn path type '%s'" % fmt)
-
- def match_substring(self, str):
- """Test whether str is a substring of any representation of this
- PathIdentifier."""
- if self.repo_relative_path.find(str) >= 0:
- return True
-
- if self.uuid:
- if ("uuid://%s%s" % (self.uuid, self.repo_relative_path)).find(str) >= 0:
- return True
-
- if self.url:
- if (self.url + self.repo_relative_path).find(str) >= 0:
- return True
-
- return False
-
- def get_url(self):
- """Convert a pathid into a URL. If this is not possible, error out."""
- if self.url:
- return self.url
- # if we have a uuid and happen to know the URL for it, use that
- elif self.uuid and PathIdentifier.repo_hints.has_key(self.uuid):
- self.url = PathIdentifier.repo_hints[self.uuid] + self.repo_relative_path
- PathIdentifier.locobjs[self.url] = self
- return self.url
- # if we've only seen one rep, use that (a guess, but an educated one)
- elif not self.uuid and len(PathIdentifier.repo_hints) == 1:
- uuid, root = PathIdentifier.repo_hints.items()[0]
- if uuid:
- self.uuid = uuid
- PathIdentifier.locobjs['uuid://%s%s' % (uuid, self.repo_relative_path)] = self
- self.url = root + self.repo_relative_path
- PathIdentifier.locobjs[self.url] = self
- report("Guessing that '%s' refers to '%s'" % (self, self.url))
- return self.url
- else:
- error("Cannot determine URL for '%s'; " % self +
- "Explicit source argument (-S/--source) required.\n")
-
-class RevisionLog:
- """
- A log of the revisions which affected a given URL between two
- revisions.
- """
-
- def __init__(self, url, begin, end, find_propchanges=False):
- """
- Create a new RevisionLog object, which stores, in self.revs, a list
- of the revisions which affected the specified URL between begin and
- end. If find_propchanges is True, self.propchange_revs will contain a
- list of the revisions which changed properties directly on the
- specified URL. URL must be the URL for a directory in the repository.
- """
- self.url = url
-
- # Setup the log options (--quiet, so we don't show log messages)
- log_opts = '--xml --quiet -r%s:%s "%s"' % (begin, end, url)
- if find_propchanges:
- # The --verbose flag lets us grab merge tracking information
- # by looking at propchanges
- log_opts = "--verbose " + log_opts
-
- # Read the log to look for revision numbers and merge-tracking info
- self.revs = []
- self.propchange_revs = []
- repos_pathid = PathIdentifier.from_target(url)
- for chg in SvnLogParser(launchsvn("log %s" % log_opts,
- split_lines=False)):
- self.revs.append(chg.revision())
- for p in chg.paths():
- if p.action() == 'M' and p.pathid() == repos_pathid.repo_relative_path:
- self.propchange_revs.append(chg.revision())
-
- # Save the range of the log
- self.begin = int(begin)
- if end == "HEAD":
- # If end is not provided, we do not know which is the latest
- # revision in the repository. So we set 'end' to the latest
- # known revision.
- self.end = self.revs[-1]
- else:
- self.end = int(end)
-
- self._merges = None
- self._blocks = None
-
- def merge_metadata(self):
- """
- Return a VersionedProperty object, with a cached view of the merge
- metadata in the range of this log.
- """
-
- # Load merge metadata if necessary
- if not self._merges:
- self._merges = VersionedProperty(self.url, opts["prop"])
- self._merges.load(self)
-
- return self._merges
-
- def block_metadata(self):
- if not self._blocks:
- self._blocks = VersionedProperty(self.url, opts["block-prop"])
- self._blocks.load(self)
-
- return self._blocks
-
-
-class VersionedProperty:
- """
- A read-only, cached view of a versioned property.
-
- self.revs contains a list of the revisions in which the property changes.
- self.values stores the new values at each corresponding revision. If the
- value of the property is unknown, it is set to None.
-
- Initially, we set self.revs to [0] and self.values to [None]. This
- indicates that, as of revision zero, we know nothing about the value of
- the property.
-
- Later, if you run self.load(log), we cache the value of this property over
- the entire range of the log by noting each revision in which the property
- was changed. At the end of the range of the log, we invalidate our cache
- by adding the value "None" to our cache for any revisions which fall out
- of the range of our log.
-
- Once self.revs and self.values are filled, we can find the value of the
- property at any arbitrary revision using a binary search on self.revs.
- Once we find the last revision during which the property was changed,
- we can lookup the associated value in self.values. (If the associated
- value is None, the associated value was not cached and we have to do
- a full propget.)
-
- An example: We know that the 'svnmerge' property was added in r10, and
- changed in r21. We gathered log info up until r40.
-
- revs = [0, 10, 21, 40]
- values = [None, "val1", "val2", None]
-
- What these values say:
- - From r0 to r9, we know nothing about the property.
- - In r10, the property was set to "val1". This property stayed the same
- until r21, when it was changed to "val2".
- - We don't know what happened after r40.
- """
-
- def __init__(self, url, name):
- """View the history of a versioned property at URL with name"""
- self.url = url
- self.name = name
-
- # We know nothing about the value of the property. Setup revs
- # and values to indicate as such.
- self.revs = [0]
- self.values = [None]
-
- # We don't have any revisions cached
- self._initial_value = None
- self._changed_revs = []
- self._changed_values = []
-
- def load(self, log):
- """
- Load the history of property changes from the specified
- RevisionLog object.
- """
-
- # Get the property value before the range of the log
- if log.begin > 1:
- self.revs.append(log.begin-1)
- try:
- self._initial_value = self.raw_get(log.begin-1)
- except LaunchError:
- # The specified URL might not exist before the
- # range of the log. If so, we can safely assume
- # that the property was empty at that time.
- self._initial_value = { }
- self.values.append(self._initial_value)
- else:
- self._initial_value = { }
- self.values[0] = self._initial_value
-
- # Cache the property values in the log range
- old_value = self._initial_value
- for rev in log.propchange_revs:
- new_value = self.raw_get(rev)
- if new_value != old_value:
- self._changed_revs.append(rev)
- self._changed_values.append(new_value)
- self.revs.append(rev)
- self.values.append(new_value)
- old_value = new_value
-
- # Indicate that we know nothing about the value of the property
- # after the range of the log.
- if log.revs:
- self.revs.append(log.end+1)
- self.values.append(None)
-
- def raw_get(self, rev=None):
- """
- Get the property at revision REV. If rev is not specified, get
- the property at revision HEAD.
- """
- return get_revlist_prop(self.url, self.name, rev)
-
- def get(self, rev=None):
- """
- Get the property at revision REV. If rev is not specified, get
- the property at revision HEAD.
- """
-
- if rev is not None:
-
- # Find the index using a binary search
- i = bisect(self.revs, rev) - 1
-
- # Return the value of the property, if it was cached
- if self.values[i] is not None:
- return self.values[i]
-
- # Get the current value of the property
- return self.raw_get(rev)
-
- def changed_revs(self, key=None):
- """
- Get a list of the revisions in which the specified dictionary
- key was changed in this property. If key is not specified,
- return a list of revisions in which any key was changed.
- """
- if key is None:
- return self._changed_revs
- else:
- changed_revs = []
- old_val = self._initial_value
- for rev, val in zip(self._changed_revs, self._changed_values):
- if val.get(key) != old_val.get(key):
- changed_revs.append(rev)
- old_val = val
- return changed_revs
-
- def initialized_revs(self):
- """
- Get a list of the revisions in which keys were added or
- removed in this property.
- """
- initialized_revs = []
- old_len = len(self._initial_value)
- for rev, val in zip(self._changed_revs, self._changed_values):
- if len(val) != old_len:
- initialized_revs.append(rev)
- old_len = len(val)
- return initialized_revs
-
-class RevisionSet:
- """
- A set of revisions, held in dictionary form for easy manipulation. If we
- were to rewrite this script for Python 2.3+, we would subclass this from
- set (or UserSet). As this class does not include branch
- information, it's assumed that one instance will be used per
- branch.
- """
- def __init__(self, parm):
- """Constructs a RevisionSet from a string in property form, or from
- a dictionary whose keys are the revisions. Raises ValueError if the
- input string is invalid."""
-
- self._revs = {}
-
- revision_range_split_re = re.compile('[-:]')
-
- if isinstance(parm, types.DictType):
- self._revs = parm.copy()
- elif isinstance(parm, types.ListType):
- for R in parm:
- self._revs[int(R)] = 1
- else:
- parm = parm.strip()
- if parm:
- for R in parm.split(","):
- rev_or_revs = re.split(revision_range_split_re, R)
- if len(rev_or_revs) == 1:
- self._revs[int(rev_or_revs[0])] = 1
- elif len(rev_or_revs) == 2:
- for rev in range(int(rev_or_revs[0]),
- int(rev_or_revs[1])+1):
- self._revs[rev] = 1
- else:
- raise ValueError, 'Ill formatted revision range: ' + R
-
- def sorted(self):
- revnums = self._revs.keys()
- revnums.sort()
- return revnums
-
- def normalized(self):
- """Returns a normalized version of the revision set, which is an
- ordered list of couples (start,end), with the minimum number of
- intervals."""
- revnums = self.sorted()
- revnums.reverse()
- ret = []
- while revnums:
- s = e = revnums.pop()
- while revnums and revnums[-1] in (e, e+1):
- e = revnums.pop()
- ret.append((s, e))
- return ret
-
- def __str__(self):
- """Convert the revision set to a string, using its normalized form."""
- L = []
- for s,e in self.normalized():
- if s == e:
- L.append(str(s))
- else:
- L.append(str(s) + "-" + str(e))
- return ",".join(L)
-
- def __contains__(self, rev):
- return self._revs.has_key(rev)
-
- def __sub__(self, rs):
- """Compute subtraction as in sets."""
- revs = {}
- for r in self._revs.keys():
- if r not in rs:
- revs[r] = 1
- return RevisionSet(revs)
-
- def __and__(self, rs):
- """Compute intersections as in sets."""
- revs = {}
- for r in self._revs.keys():
- if r in rs:
- revs[r] = 1
- return RevisionSet(revs)
-
- def __nonzero__(self):
- return len(self._revs) != 0
-
- def __len__(self):
- """Return the number of revisions in the set."""
- return len(self._revs)
-
- def __iter__(self):
- return iter(self.sorted())
-
- def __or__(self, rs):
- """Compute set union."""
- revs = self._revs.copy()
- revs.update(rs._revs)
- return RevisionSet(revs)
-
-def merge_props_to_revision_set(merge_props, pathid):
- """A converter which returns a RevisionSet instance containing the
- revisions from PATH as known to BRANCH_PROPS. BRANCH_PROPS is a
- dictionary of pathid -> revision set branch integration information
- (as returned by get_merge_props())."""
- if not merge_props.has_key(pathid):
- error('no integration info available for path "%s"' % pathid)
- return RevisionSet(merge_props[pathid])
-
-def dict_from_revlist_prop(propvalue):
- """Given a property value as a string containing per-source revision
- lists, return a dictionary whose key is a source path identifier
- and whose value is the revisions for that source."""
- prop = {}
-
- # Multiple sources are separated by any whitespace.
- for L in propvalue.split():
- # We use rsplit to play safe and allow colons in pathids.
- pathid_str, revs = rsplit(L.strip(), ":", 1)
-
- pathid = PathIdentifier.from_pathid(pathid_str)
-
- # cache the "external" form we saw
- pathid.external_form = pathid_str
-
- prop[pathid] = revs
- return prop
-
-def get_revlist_prop(url_or_dir, propname, rev=None):
- """Given a repository URL or working copy path and a property
- name, extract the values of the property which store per-source
- revision lists and return a dictionary whose key is a source path
- identifier, and whose value is the revisions for that source."""
-
- # Note that propget does not return an error if the property does
- # not exist, it simply does not output anything. So we do not need
- # to check for LaunchError here.
- args = '--strict "%s" "%s"' % (propname, url_or_dir)
- if rev:
- args = '-r %s %s' % (rev, args)
- out = launchsvn('propget %s' % args, split_lines=False)
-
- return dict_from_revlist_prop(out)
-
-def get_merge_props(dir):
- """Extract the merged revisions."""
- return get_revlist_prop(dir, opts["prop"])
-
-def get_block_props(dir):
- """Extract the blocked revisions."""
- return get_revlist_prop(dir, opts["block-prop"])
-
-def get_blocked_revs(dir, source_pathid):
- p = get_block_props(dir)
- if p.has_key(source_pathid):
- return RevisionSet(p[source_pathid])
- return RevisionSet("")
-
-def format_merge_props(props, sep=" "):
- """Formats the hash PROPS as a string suitable for use as a
- Subversion property value."""
- assert sep in ["\t", "\n", " "] # must be a whitespace
- props = props.items()
- props.sort()
- L = []
- for h, r in props:
- L.append("%s:%s" % (h, r))
- return sep.join(L)
-
-def _run_propset(dir, prop, value):
- """Set the property 'prop' of directory 'dir' to value 'value'. We go
- through a temporary file to not run into command line length limits."""
- try:
- fd, fname = tempfile.mkstemp()
- f = os.fdopen(fd, "wb")
- except AttributeError:
- # Fallback for Python <= 2.3 which does not have mkstemp (mktemp
- # suffers from race conditions. Not that we care...)
- fname = tempfile.mktemp()
- f = open(fname, "wb")
-
- try:
- f.write(value)
- f.close()
- report("property data written to temp file: %s" % value)
- svn_command('propset "%s" -F "%s" "%s"' % (prop, fname, dir))
- finally:
- os.remove(fname)
-
-def set_props(dir, name, props):
- props = format_merge_props(props)
- if props:
- _run_propset(dir, name, props)
- else:
- # Check if NAME exists on DIR before trying to delete it.
- # As of 1.6 propdel no longer supports deleting a
- # non-existent property.
- out = launchsvn('propget "%s" "%s"' % (name, dir))
- if out:
- svn_command('propdel "%s" "%s"' % (name, dir))
-
-def set_merge_props(dir, props):
- set_props(dir, opts["prop"], props)
-
-def set_block_props(dir, props):
- set_props(dir, opts["block-prop"], props)
-
-def set_blocked_revs(dir, source_pathid, revs):
- props = get_block_props(dir)
- if revs:
- props[source_pathid] = str(revs)
- elif props.has_key(source_pathid):
- del props[source_pathid]
- set_block_props(dir, props)
-
-def is_url(url):
- """Check if url looks like a valid url."""
- return re.search(r"^[a-zA-Z][-+\.\w]*://[^\s]+$", url) is not None and url[:4] != 'uuid'
-
-def check_url(url):
- """Similar to is_url, but actually invoke get_svninfo to find out"""
- return get_svninfo(url) != {}
-
-def is_pathid(pathid):
- return isinstance(pathid, PathIdentifier)
-
-def is_wc(dir):
- """Check if a directory is a working copy."""
- return os.path.isdir(os.path.join(dir, ".svn")) or \
- os.path.isdir(os.path.join(dir, "_svn"))
-
-_cache_svninfo = {}
-def get_svninfo(target):
- """Extract the subversion information for a target (through 'svn info').
- This function uses an internal cache to let clients query information
- many times."""
- if _cache_svninfo.has_key(target):
- return _cache_svninfo[target]
- info = {}
- for L in launchsvn('info "%s"' % target):
- L = L.strip()
- if not L:
- continue
- key, value = L.split(": ", 1)
- info[key] = value.strip()
- _cache_svninfo[target] = info
- return info
-
-def target_to_url(target):
- """Convert working copy path or repos URL to a repos URL."""
- if is_wc(target):
- info = get_svninfo(target)
- return info["URL"]
- return target
-
-_cache_reporoot = {}
-def get_repo_root(target):
- """Compute the root repos URL given a working-copy path, or a URL."""
- # Try using "svn info WCDIR". This works only on SVN clients >= 1.3
- if not is_url(target):
- try:
- info = get_svninfo(target)
- root = info["Repository Root"]
- _cache_reporoot[root] = None
- return root
- except KeyError:
- pass
- url = target_to_url(target)
- assert url[-1] != '/'
- else:
- url = target
-
- # Go through the cache of the repository roots. This avoids extra
- # server round-trips if we are asking the root of different URLs
- # in the same repository (the cache in get_svninfo() cannot detect
- # that of course and would issue a remote command).
- assert is_url(url)
- for r in _cache_reporoot:
- if url.startswith(r):
- return r
-
- # Try using "svn info URL". This works only on SVN clients >= 1.2
- try:
- info = get_svninfo(url)
- # info may be {}, in which case we'll see KeyError here
- root = info["Repository Root"]
- _cache_reporoot[root] = None
- return root
- except (KeyError, LaunchError):
- pass
-
- # Constrained to older svn clients, we are stuck with this ugly
- # trial-and-error implementation. It could be made faster with a
- # binary search.
- while url:
- temp = os.path.dirname(url)
- try:
- launchsvn('proplist "%s"' % temp)
- except LaunchError:
- _cache_reporoot[url] = None
- return rstrip(url, "/")
- url = temp
-
- error("svn repos root of %s not found" % target)
-
-class SvnLogParser:
- """
- Parse the "svn log", going through the XML output and using pulldom (which
- would even allow streaming the command output).
- """
- def __init__(self, xml):
- self._events = pulldom.parseString(xml)
- def __getitem__(self, idx):
- for event, node in self._events:
- if event == pulldom.START_ELEMENT and node.tagName == "logentry":
- self._events.expandNode(node)
- return self.SvnLogRevision(node)
- raise IndexError, "Could not find 'logentry' tag in xml"
-
- class SvnLogRevision:
- def __init__(self, xmlnode):
- self.n = xmlnode
- def revision(self):
- return int(self.n.getAttribute("revision"))
- def author(self):
- return self.n.getElementsByTagName("author")[0].firstChild.data
- def paths(self):
- return [self.SvnLogPath(n)
- for n in self.n.getElementsByTagName("path")]
-
- class SvnLogPath:
- def __init__(self, xmlnode):
- self.n = xmlnode
- def action(self):
- return self.n.getAttribute("action")
- def pathid(self):
- return self.n.firstChild.data
- def copyfrom_rev(self):
- try: return self.n.getAttribute("copyfrom-rev")
- except KeyError: return None
- def copyfrom_pathid(self):
- try: return self.n.getAttribute("copyfrom-path")
- except KeyError: return None
-
-def get_copyfrom(target):
- """Get copyfrom info for a given target (it represents the
- repository-relative path from where it was branched). NOTE:
- repos root has no copyfrom info. In this case None is returned.
-
- Returns the:
- - source file or directory from which the copy was made
- - revision from which that source was copied
- - revision in which the copy was committed
- """
- repos_path = PathIdentifier.from_target(target).repo_relative_path
- for chg in SvnLogParser(launchsvn('log -v --xml --stop-on-copy "%s"'
- % target, split_lines=False)):
- for p in chg.paths():
- if p.action() == 'A' and p.pathid() == repos_path:
- # These values will be None if the corresponding elements are
- # not found in the log.
- return p.copyfrom_pathid(), p.copyfrom_rev(), chg.revision()
- return None,None,None
-
-def get_latest_rev(url):
- """Get the latest revision of the repository of which URL is part."""
- try:
- info = get_svninfo(url)
- if not info.has_key("Revision"):
- error("Not a valid URL: %s" % url)
- return info["Revision"]
- except LaunchError:
- # Alternative method for latest revision checking (for svn < 1.2)
- report('checking latest revision of "%s"' % url)
- L = launchsvn('proplist --revprop -r HEAD "%s"' % opts["source-url"])[0]
- rev = re.search("revision (\d+)", L).group(1)
- report('latest revision of "%s" is %s' % (url, rev))
- return rev
-
-def get_created_rev(url):
- """Lookup the revision at which the path identified by the
- provided URL was first created."""
- oldest_rev = -1
- report('determining oldest revision for URL "%s"' % url)
- ### TODO: Refactor this to use a modified RevisionLog class.
- lines = None
- cmd = "log -r1:HEAD --stop-on-copy -q " + url
- try:
- lines = launchsvn(cmd + " --limit=1")
- except LaunchError:
- # Assume that --limit isn't supported by the installed 'svn'.
- lines = launchsvn(cmd)
- if lines and len(lines) > 1:
- i = lines[1].find(" ")
- if i != -1:
- oldest_rev = int(lines[1][1:i])
- if oldest_rev == -1:
- error('unable to determine oldest revision for URL "%s"' % url)
- return oldest_rev
-
-def get_commit_log(url, revnum):
- """Return the log message for a specific integer revision
- number."""
- out = launchsvn("log --incremental -r%d %s" % (revnum, url))
- return recode_stdout_to_file("".join(out[1:]))
-
-def construct_merged_log_message(url, revnums):
- """Return a commit log message containing all the commit messages
- in the specified revisions at the given URL. The separator used
- in this log message is determined by searching for the longest
- svnmerge separator existing in the commit log messages and
- extending it by one more separator. This results in a new commit
- log message that is clearer in describing merges that contain
- other merges. Trailing newlines are removed from the embedded
- log messages."""
- messages = ['']
- longest_sep = ''
- for r in revnums.sorted():
- message = get_commit_log(url, r)
- if message:
- message = re.sub(r'(\r\n|\r|\n)', "\n", message)
- message = rstrip(message, "\n") + "\n"
- messages.append(prefix_lines(LOG_LINE_PREFIX, message))
- for match in LOG_SEPARATOR_RE.findall(message):
- sep = match[1]
- if len(sep) > len(longest_sep):
- longest_sep = sep
-
- longest_sep += LOG_SEPARATOR + "\n"
- messages.append('')
- return longest_sep.join(messages)
-
-def get_default_source(branch_target, branch_props):
- """Return the default source for branch_target (given its branch_props).
- Error out if there is ambiguity."""
- if not branch_props:
- error("no integration info available")
-
- props = branch_props.copy()
- pathid = PathIdentifier.from_target(branch_target)
-
- # To make bidirectional merges easier, find the target's
- # repository local path so it can be removed from the list of
- # possible integration sources.
- if props.has_key(pathid):
- del props[pathid]
-
- if len(props) > 1:
- err_msg = "multiple sources found. "
- err_msg += "Explicit source argument (-S/--source) required.\n"
- err_msg += "The merge sources available are:"
- for prop in props:
- err_msg += "\n " + str(prop)
- error(err_msg)
-
- return props.keys()[0]
-
-def should_find_reflected(branch_dir):
- should_find_reflected = opts["bidirectional"]
-
- # If the source has integration info for the target, set find_reflected
- # even if --bidirectional wasn't specified
- if not should_find_reflected:
- source_props = get_merge_props(opts["source-url"])
- should_find_reflected = source_props.has_key(PathIdentifier.from_target(branch_dir))
-
- return should_find_reflected
-
-def analyze_revs(target_pathid, url, begin=1, end=None,
- find_reflected=False):
- """For the source of the merges in the source URL being merged into
- target_pathid, analyze the revisions in the interval begin-end (which
- defaults to 1-HEAD), to find out which revisions are changes in
- the url, which are changes elsewhere (so-called 'phantom'
- revisions), optionally which are reflected changes (to avoid
- conflicts that can occur when doing bidirectional merging between
- branches), and which revisions initialize merge tracking against other
- branches. Return a tuple of four RevisionSet's:
- (real_revs, phantom_revs, reflected_revs, initialized_revs).
-
- NOTE: To maximize speed, if "end" is not provided, the function is
- not able to find phantom revisions following the last real
- revision in the URL.
- """
-
- begin = str(begin)
- if end is None:
- end = "HEAD"
- else:
- end = str(end)
- if long(begin) > long(end):
- return RevisionSet(""), RevisionSet(""), \
- RevisionSet(""), RevisionSet("")
-
- logs[url] = RevisionLog(url, begin, end, find_reflected)
- revs = RevisionSet(logs[url].revs)
-
- if end == "HEAD":
- # If end is not provided, we do not know which is the latest revision
- # in the repository. So return the phantom revision set only up to
- # the latest known revision.
- end = str(list(revs)[-1])
-
- phantom_revs = RevisionSet("%s-%s" % (begin, end)) - revs
-
- if find_reflected:
- reflected_revs = logs[url].merge_metadata().changed_revs(target_pathid)
- reflected_revs += logs[url].block_metadata().changed_revs(target_pathid)
- else:
- reflected_revs = []
-
- initialized_revs = RevisionSet(logs[url].merge_metadata().initialized_revs())
- reflected_revs = RevisionSet(reflected_revs)
-
- return revs, phantom_revs, reflected_revs, initialized_revs
-
-def analyze_source_revs(branch_target, source_url, **kwargs):
- """For the given branch and source, extract the real and phantom
- source revisions."""
- branch_url = target_to_url(branch_target)
- branch_pathid = PathIdentifier.from_target(branch_target)
-
- # Extract the latest repository revision from the URL of the branch
- # directory (which is already cached at this point).
- end_rev = get_latest_rev(source_url)
-
- # Calculate the base of analysis. If there is a "1-XX" interval in the
- # merged_revs, we do not need to check those.
- base = 1
- r = opts["merged-revs"].normalized()
- if r and r[0][0] == 1:
- base = r[0][1] + 1
-
- # See if the user filtered the revision set. If so, we are not
- # interested in something outside that range.
- if opts["revision"]:
- revs = RevisionSet(opts["revision"]).sorted()
- if base < revs[0]:
- base = revs[0]
- if end_rev > revs[-1]:
- end_rev = revs[-1]
-
- return analyze_revs(branch_pathid, source_url, base, end_rev, **kwargs)
-
-def minimal_merge_intervals(revs, phantom_revs):
- """Produce the smallest number of intervals suitable for merging. revs
- is the RevisionSet which we want to merge, and phantom_revs are phantom
- revisions which can be used to concatenate intervals, thus minimizing the
- number of operations."""
- revnums = revs.normalized()
- ret = []
-
- cur = revnums.pop()
- while revnums:
- next = revnums.pop()
- assert next[1] < cur[0] # otherwise it is not ordered
- assert cur[0] - next[1] > 1 # otherwise it is not normalized
- for i in range(next[1]+1, cur[0]):
- if i not in phantom_revs:
- ret.append(cur)
- cur = next
- break
- else:
- cur = (next[0], cur[1])
-
- ret.append(cur)
- ret.reverse()
- return ret
-
-def display_revisions(revs, display_style, revisions_msg, source_url):
- """Show REVS as dictated by DISPLAY_STYLE, either numerically, in
- log format, or as diffs. When displaying revisions numerically,
- prefix output with REVISIONS_MSG when in verbose mode. Otherwise,
- request logs or diffs using SOURCE_URL."""
- if display_style == "revisions":
- if revs:
- report(revisions_msg)
- print revs
- elif display_style == "logs":
- for start,end in revs.normalized():
- svn_command('log --incremental -v -r %d:%d %s' % \
- (start, end, source_url))
- elif display_style in ("diffs", "summarize"):
- if display_style == 'summarize':
- summarize = '--summarize '
- else:
- summarize = ''
-
- for start, end in revs.normalized():
- print
- if start == end:
- print "%s: changes in revision %d follow" % (NAME, start)
- else:
- print "%s: changes in revisions %d-%d follow" % (NAME,
- start, end)
- print
-
- # Note: the starting revision number to 'svn diff' is
- # NOT inclusive so we have to subtract one from ${START}.
- svn_command("diff -r %d:%d %s %s" % (start - 1, end, summarize,
- source_url))
- else:
- assert False, "unhandled display style: %s" % display_style
-
-def action_init(target_dir, target_props):
- """Initialize for merges."""
- # Check that directory is ready for being modified
- check_dir_clean(target_dir)
-
- target_pathid = PathIdentifier.from_target(target_dir)
- source_pathid = opts['source-pathid']
- if source_pathid == target_pathid:
- error("cannot init integration source path '%s'\nIts path identifier does not "
- "differ from the path identifier of the current directory, '%s'."
- % (source_pathid, target_pathid))
-
- source_url = opts['source-url']
-
- # If the user hasn't specified the revisions to use, see if the
- # "source" is a copy from the current tree and if so, we can use
- # the version data obtained from it.
- revision_range = opts["revision"]
- if not revision_range:
- # If source was originally copied from target, and we are merging
- # changes from source to target (the copy target is the merge source,
- # and the copy source is the merge target), then we want to mark as
- # integrated up to the rev in which the copy was committed which
- # created the merge source:
- cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(source_url)
-
- cf_pathid = None
- if cf_source:
- cf_url = get_repo_root(source_url) + cf_source
- if is_url(cf_url) and check_url(cf_url):
- cf_pathid = PathIdentifier.from_target(cf_url)
-
- if target_pathid == cf_pathid:
- report('the source "%s" was copied from "%s" in rev %s and committed in rev %s' %
- (source_url, target_dir, cf_rev, copy_committed_in_rev))
- revision_range = "1-" + str(copy_committed_in_rev)
-
- if not revision_range:
- # If the reverse is true: copy source is the merge source, and
- # the copy target is the merge target, then we want to mark as
- # integrated up to the specific rev of the merge target from
- # which the merge source was copied. (Longer discussion at:
- # http://subversion.tigris.org/issues/show_bug.cgi?id=2810 )
- cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(target_dir)
-
- cf_pathid = None
- if cf_source:
- cf_url = get_repo_root(target_dir) + cf_source
- if is_url(cf_url) and check_url(cf_url):
- cf_pathid = PathIdentifier.from_target(cf_url)
-
- source_pathid = PathIdentifier.from_target(source_url)
- if source_pathid == cf_pathid:
- report('the target "%s" was copied the source "%s" in rev %s and committed in rev %s' %
- (target_dir, source_url, cf_rev, copy_committed_in_rev))
- revision_range = "1-" + cf_rev
-
- # When neither the merge source nor target is a copy of the other, and
- # the user did not specify a revision range, then choose a default which is
- # the current revision; saying, in effect, "everything has been merged, so
- # mark as integrated up to the latest rev on source url).
- if not revision_range:
- revision_range = "1-" + get_latest_rev(source_url)
-
- revs = RevisionSet(revision_range)
-
- report('marking "%s" as already containing revisions "%s" of "%s"' %
- (target_dir, revs, source_url))
-
- revs = str(revs)
- # If the local svnmerge-integrated property already has an entry
- # for the source-pathid, simply error out.
- if not opts["force"] and target_props.has_key(source_pathid):
- error('Repository-relative path %s has already been initialized at %s\n'
- 'Use --force to re-initialize' % (source_pathid, target_dir))
- # set the pathid's external_form based on the user's options
- source_pathid.external_form = source_pathid.format(opts['location-type'])
-
- revs = str(revs)
- target_props[source_pathid] = revs
-
- # Set property
- set_merge_props(target_dir, target_props)
-
- # Write out commit message if desired
- if opts["commit-file"]:
- f = open(opts["commit-file"], "w")
- print >>f, 'Initialized merge tracking via "%s" with revisions "%s" from ' \
- % (NAME, revs)
- print >>f, '%s' % source_url
- f.close()
- report('wrote commit message to "%s"' % opts["commit-file"])
-
-def action_avail(branch_dir, branch_props):
- """Show commits available for merges."""
- source_revs, phantom_revs, reflected_revs, initialized_revs = \
- analyze_source_revs(branch_dir, opts["source-url"],
- find_reflected=
- should_find_reflected(branch_dir))
- report('skipping phantom revisions: %s' % phantom_revs)
- if reflected_revs:
- report('skipping reflected revisions: %s' % reflected_revs)
- report('skipping initialized revisions: %s' % initialized_revs)
-
- blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
- avail_revs = source_revs - opts["merged-revs"] - blocked_revs - \
- reflected_revs - initialized_revs
-
- # Compose the set of revisions to show
- revs = RevisionSet("")
- report_msg = "revisions available to be merged are:"
- if "avail" in opts["avail-showwhat"]:
- revs |= avail_revs
- if "blocked" in opts["avail-showwhat"]:
- revs |= blocked_revs
- report_msg = "revisions blocked are:"
-
- # Limit to revisions specified by -r (if any)
- if opts["revision"]:
- revs = revs & RevisionSet(opts["revision"])
-
- display_revisions(revs, opts["avail-display"],
- report_msg,
- opts["source-url"])
-
-def action_integrated(branch_dir, branch_props):
- """Show change sets already merged. This set of revisions is
- calculated from taking svnmerge-integrated property from the
- branch, and subtracting any revision older than the branch
- creation revision."""
- # Extract the integration info for the branch_dir
- branch_props = get_merge_props(branch_dir)
- revs = merge_props_to_revision_set(branch_props, opts["source-pathid"])
-
- # Lookup the oldest revision on the branch path.
- oldest_src_rev = get_created_rev(opts["source-url"])
-
- # Subtract any revisions which pre-date the branch.
- report("subtracting revisions which pre-date the source URL (%d)" %
- oldest_src_rev)
- revs = revs - RevisionSet(range(1, oldest_src_rev))
-
- # Limit to revisions specified by -r (if any)
- if opts["revision"]:
- revs = revs & RevisionSet(opts["revision"])
-
- display_revisions(revs, opts["integrated-display"],
- "revisions already integrated are:", opts["source-url"])
-
-def action_merge(branch_dir, branch_props):
- """Record merge meta data, and do the actual merge (if not
- requested otherwise via --record-only)."""
- # Check branch directory is ready for being modified
- check_dir_clean(branch_dir)
-
- source_revs, phantom_revs, reflected_revs, initialized_revs = \
- analyze_source_revs(branch_dir, opts["source-url"],
- find_reflected=
- should_find_reflected(branch_dir))
-
- if opts["revision"]:
- revs = RevisionSet(opts["revision"])
- else:
- revs = source_revs
-
- blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
- merged_revs = opts["merged-revs"]
-
- # Show what we're doing
- if opts["verbose"]: # just to avoid useless calculations
- if merged_revs & revs:
- report('"%s" already contains revisions %s' % (branch_dir,
- merged_revs & revs))
- if phantom_revs:
- report('memorizing phantom revision(s): %s' % phantom_revs)
- if reflected_revs:
- report('memorizing reflected revision(s): %s' % reflected_revs)
- if blocked_revs & revs:
- report('skipping blocked revisions(s): %s' % (blocked_revs & revs))
- if initialized_revs:
- report('skipping initialized revision(s): %s' % initialized_revs)
-
- # Compute final merge set.
- revs = revs - merged_revs - blocked_revs - reflected_revs - \
- phantom_revs - initialized_revs
- if not revs:
- report('no revisions to merge, exiting')
- return
-
- # When manually marking revisions as merged, we only update the
- # integration meta data, and don't perform an actual merge.
- record_only = opts["record-only"]
-
- if record_only:
- report('recording merge of revision(s) %s from "%s"' %
- (revs, opts["source-url"]))
- else:
- report('merging in revision(s) %s from "%s"' %
- (revs, opts["source-url"]))
-
- # Do the merge(s). Note: the starting revision number to 'svn merge'
- # is NOT inclusive so we have to subtract one from start.
- # We try to keep the number of merge operations as low as possible,
- # because it is faster and reduces the number of conflicts.
- old_block_props = get_block_props(branch_dir)
- merge_metadata = logs[opts["source-url"]].merge_metadata()
- block_metadata = logs[opts["source-url"]].block_metadata()
- for start,end in minimal_merge_intervals(revs, phantom_revs):
- if not record_only:
- # Preset merge/blocked properties to the source value at
- # the start rev to avoid spurious property conflicts
- set_merge_props(branch_dir, merge_metadata.get(start - 1))
- set_block_props(branch_dir, block_metadata.get(start - 1))
- # Do the merge
- svn_command("merge --force -r %d:%d %s %s" % \
- (start - 1, end, opts["source-url"], branch_dir))
- # TODO: to support graph merging, add logic to merge the property
- # meta-data manually
-
- # Update the set of merged revisions.
- merged_revs = merged_revs | revs | reflected_revs | phantom_revs | initialized_revs
- branch_props[opts["source-pathid"]] = str(merged_revs)
- set_merge_props(branch_dir, branch_props)
- # Reset the blocked revs
- set_block_props(branch_dir, old_block_props)
-
- # Write out commit message if desired
- if opts["commit-file"]:
- f = open(opts["commit-file"], "w")
- if record_only:
- print >>f, 'Recorded merge of revisions %s via %s from ' % \
- (revs, NAME)
- else:
- print >>f, 'Merged revisions %s via %s from ' % \
- (revs, NAME)
- print >>f, '%s' % opts["source-url"]
- if opts["commit-verbose"]:
- print >>f
- print >>f, construct_merged_log_message(opts["source-url"], revs),
-
- f.close()
- report('wrote commit message to "%s"' % opts["commit-file"])
-
-def action_block(branch_dir, branch_props):
- """Block revisions."""
- # Check branch directory is ready for being modified
- check_dir_clean(branch_dir)
-
- source_revs, phantom_revs, reflected_revs, initialized_revs = \
- analyze_source_revs(branch_dir, opts["source-url"])
- revs_to_block = source_revs - opts["merged-revs"]
-
- # Limit to revisions specified by -r (if any)
- if opts["revision"]:
- revs_to_block = RevisionSet(opts["revision"]) & revs_to_block
-
- if not revs_to_block:
- error('no available revisions to block')
-
- # Change blocked information
- blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
- blocked_revs = blocked_revs | revs_to_block
- set_blocked_revs(branch_dir, opts["source-pathid"], blocked_revs)
-
- # Write out commit message if desired
- if opts["commit-file"]:
- f = open(opts["commit-file"], "w")
- print >>f, 'Blocked revisions %s via %s' % (revs_to_block, NAME)
- if opts["commit-verbose"]:
- print >>f
- print >>f, construct_merged_log_message(opts["source-url"],
- revs_to_block),
-
- f.close()
- report('wrote commit message to "%s"' % opts["commit-file"])
-
-def action_unblock(branch_dir, branch_props):
- """Unblock revisions."""
- # Check branch directory is ready for being modified
- check_dir_clean(branch_dir)
-
- blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
- revs_to_unblock = blocked_revs
-
- # Limit to revisions specified by -r (if any)
- if opts["revision"]:
- revs_to_unblock = revs_to_unblock & RevisionSet(opts["revision"])
-
- if not revs_to_unblock:
- error('no available revisions to unblock')
-
- # Change blocked information
- blocked_revs = blocked_revs - revs_to_unblock
- set_blocked_revs(branch_dir, opts["source-pathid"], blocked_revs)
-
- # Write out commit message if desired
- if opts["commit-file"]:
- f = open(opts["commit-file"], "w")
- print >>f, 'Unblocked revisions %s via %s' % (revs_to_unblock, NAME)
- if opts["commit-verbose"]:
- print >>f
- print >>f, construct_merged_log_message(opts["source-url"],
- revs_to_unblock),
- f.close()
- report('wrote commit message to "%s"' % opts["commit-file"])
-
-def action_rollback(branch_dir, branch_props):
- """Rollback previously integrated revisions."""
-
- # Make sure the revision arguments are present
- if not opts["revision"]:
- error("The '-r' option is mandatory for rollback")
-
- # Check branch directory is ready for being modified
- check_dir_clean(branch_dir)
-
- # Extract the integration info for the branch_dir
- branch_props = get_merge_props(branch_dir)
- # Get the list of all revisions already merged into this source-pathid.
- merged_revs = merge_props_to_revision_set(branch_props,
- opts["source-pathid"])
-
- # At which revision was the src created?
- oldest_src_rev = get_created_rev(opts["source-url"])
- src_pre_exist_range = RevisionSet("1-%d" % oldest_src_rev)
-
- # Limit to revisions specified by -r (if any)
- revs = merged_revs & RevisionSet(opts["revision"])
-
- # make sure there's some revision to rollback
- if not revs:
- report("Nothing to rollback in revision range r%s" % opts["revision"])
- return
-
- # If even one specified revision lies outside the lifetime of the
- # merge source, error out.
- if revs & src_pre_exist_range:
- err_str = "Specified revision range falls out of the rollback range.\n"
- err_str += "%s was created at r%d" % (opts["source-pathid"],
- oldest_src_rev)
- error(err_str)
-
- record_only = opts["record-only"]
-
- if record_only:
- report('recording rollback of revision(s) %s from "%s"' %
- (revs, opts["source-url"]))
- else:
- report('rollback of revision(s) %s from "%s"' %
- (revs, opts["source-url"]))
-
- # Do the reverse merge(s). Note: the starting revision number
- # to 'svn merge' is NOT inclusive so we have to subtract one from start.
- # We try to keep the number of merge operations as low as possible,
- # because it is faster and reduces the number of conflicts.
- rollback_intervals = minimal_merge_intervals(revs, [])
- # rollback in the reverse order of merge
- rollback_intervals.reverse()
- for start, end in rollback_intervals:
- if not record_only:
- # Do the merge
- svn_command("merge --force -r %d:%d %s %s" % \
- (end, start - 1, opts["source-url"], branch_dir))
-
- # Write out commit message if desired
- # calculate the phantom revs first
- if opts["commit-file"]:
- f = open(opts["commit-file"], "w")
- if record_only:
- print >>f, 'Recorded rollback of revisions %s via %s from ' % \
- (revs , NAME)
- else:
- print >>f, 'Rolled back revisions %s via %s from ' % \
- (revs , NAME)
- print >>f, '%s' % opts["source-url"]
-
- f.close()
- report('wrote commit message to "%s"' % opts["commit-file"])
-
- # Update the set of merged revisions.
- merged_revs = merged_revs - revs
- branch_props[opts["source-pathid"]] = str(merged_revs)
- set_merge_props(branch_dir, branch_props)
-
-def action_uninit(branch_dir, branch_props):
- """Uninit SOURCE URL."""
- # Check branch directory is ready for being modified
- check_dir_clean(branch_dir)
-
- # If the source-pathid does not have an entry in the svnmerge-integrated
- # property, simply error out.
- if not branch_props.has_key(opts["source-pathid"]):
- error('Repository-relative path "%s" does not contain merge '
- 'tracking information for "%s"' \
- % (opts["source-pathid"], branch_dir))
-
- del branch_props[opts["source-pathid"]]
-
- # Set merge property with the selected source deleted
- set_merge_props(branch_dir, branch_props)
-
- # Set blocked revisions for the selected source to None
- set_blocked_revs(branch_dir, opts["source-pathid"], None)
-
- # Write out commit message if desired
- if opts["commit-file"]:
- f = open(opts["commit-file"], "w")
- print >>f, 'Removed merge tracking for "%s" for ' % NAME
- print >>f, '%s' % opts["source-url"]
- f.close()
- report('wrote commit message to "%s"' % opts["commit-file"])
-
-###############################################################################
-# Command line parsing -- options and commands management
-###############################################################################
-
-class OptBase:
- def __init__(self, *args, **kwargs):
- self.help = kwargs["help"]
- del kwargs["help"]
- self.lflags = []
- self.sflags = []
- for a in args:
- if a.startswith("--"): self.lflags.append(a)
- elif a.startswith("-"): self.sflags.append(a)
- else:
- raise TypeError, "invalid flag name: %s" % a
- if kwargs.has_key("dest"):
- self.dest = kwargs["dest"]
- del kwargs["dest"]
- else:
- if not self.lflags:
- raise TypeError, "cannot deduce dest name without long options"
- self.dest = self.lflags[0][2:]
- if kwargs:
- raise TypeError, "invalid keyword arguments: %r" % kwargs.keys()
- def repr_flags(self):
- f = self.sflags + self.lflags
- r = f[0]
- for fl in f[1:]:
- r += " [%s]" % fl
- return r
-
-class Option(OptBase):
- def __init__(self, *args, **kwargs):
- self.default = kwargs.setdefault("default", 0)
- del kwargs["default"]
- self.value = kwargs.setdefault("value", None)
- del kwargs["value"]
- OptBase.__init__(self, *args, **kwargs)
- def apply(self, state, value):
- assert value == ""
- if self.value is not None:
- state[self.dest] = self.value
- else:
- state[self.dest] += 1
-
-class OptionArg(OptBase):
- def __init__(self, *args, **kwargs):
- self.default = kwargs["default"]
- del kwargs["default"]
- self.metavar = kwargs.setdefault("metavar", None)
- del kwargs["metavar"]
- OptBase.__init__(self, *args, **kwargs)
-
- if self.metavar is None:
- if self.dest is not None:
- self.metavar = self.dest.upper()
- else:
- self.metavar = "arg"
- if self.default:
- self.help += " (default: %s)" % self.default
- def apply(self, state, value):
- assert value is not None
- state[self.dest] = value
- def repr_flags(self):
- r = OptBase.repr_flags(self)
- return r + " " + self.metavar
-
-class CommandOpts:
- class Cmd:
- def __init__(self, *args):
- self.name, self.func, self.usage, self.help, self.opts = args
- def short_help(self):
- return self.help.split(".")[0]
- def __str__(self):
- return self.name
- def __call__(self, *args, **kwargs):
- return self.func(*args, **kwargs)
-
- def __init__(self, global_opts, common_opts, command_table, version=None):
- self.progname = NAME
- self.version = version.replace("%prog", self.progname)
- self.cwidth = console_width() - 2
- self.ctable = command_table.copy()
- self.gopts = global_opts[:]
- self.copts = common_opts[:]
- self._add_builtins()
- for k in self.ctable.keys():
- cmd = self.Cmd(k, *self.ctable[k])
- opts = []
- for o in cmd.opts:
- if isinstance(o, types.StringType) or \
- isinstance(o, types.UnicodeType):
- o = self._find_common(o)
- opts.append(o)
- cmd.opts = opts
- self.ctable[k] = cmd
-
- def _add_builtins(self):
- self.gopts.append(
- Option("-h", "--help", help="show help for this command and exit"))
- if self.version is not None:
- self.gopts.append(
- Option("-V", "--version", help="show version info and exit"))
- self.ctable["help"] = (self._cmd_help,
- "help [COMMAND]",
- "Display help for a specific command. If COMMAND is omitted, "
- "display brief command description.",
- [])
-
- def _cmd_help(self, cmd=None, *args):
- if args:
- self.error("wrong number of arguments", "help")
- if cmd is not None:
- cmd = self._command(cmd)
- self.print_command_help(cmd)
- else:
- self.print_command_list()
-
- def _paragraph(self, text, width=78):
- chunks = re.split("\s+", text.strip())
- chunks.reverse()
- lines = []
- while chunks:
- L = chunks.pop()
- while chunks and len(L) + len(chunks[-1]) + 1 <= width:
- L += " " + chunks.pop()
- lines.append(L)
- return lines
-
- def _paragraphs(self, text, *args, **kwargs):
- pars = text.split("\n\n")
- lines = self._paragraph(pars[0], *args, **kwargs)
- for p in pars[1:]:
- lines.append("")
- lines.extend(self._paragraph(p, *args, **kwargs))
- return lines
-
- def _print_wrapped(self, text, indent=0):
- text = self._paragraphs(text, self.cwidth - indent)
- print text.pop(0)
- for t in text:
- print " " * indent + t
-
- def _find_common(self, fl):
- for o in self.copts:
- if fl in o.lflags+o.sflags:
- return o
- assert False, fl
-
- def _compute_flags(self, opts, check_conflicts=True):
- back = {}
- sfl = ""
- lfl = []
- for o in opts:
- sapp = lapp = ""
- if isinstance(o, OptionArg):
- sapp, lapp = ":", "="
- for s in o.sflags:
- if check_conflicts and back.has_key(s):
- raise RuntimeError, "option conflict: %s" % s
- back[s] = o
- sfl += s[1:] + sapp
- for l in o.lflags:
- if check_conflicts and back.has_key(l):
- raise RuntimeError, "option conflict: %s" % l
- back[l] = o
- lfl.append(l[2:] + lapp)
- return sfl, lfl, back
-
- def _extract_command(self, args):
- """
- Try to extract the command name from the argument list. This is
- non-trivial because we want to allow command-specific options even
- before the command itself.
- """
- opts = self.gopts[:]
- for cmd in self.ctable.values():
- opts.extend(cmd.opts)
- sfl, lfl, _ = self._compute_flags(opts, check_conflicts=False)
-
- lopts,largs = getopt.getopt(args, sfl, lfl)
- if not largs:
- return None
- return self._command(largs[0])
-
- def _fancy_getopt(self, args, opts, state=None):
- if state is None:
- state= {}
- for o in opts:
- if not state.has_key(o.dest):
- state[o.dest] = o.default
-
- sfl, lfl, back = self._compute_flags(opts)
- try:
- lopts,args = getopt.gnu_getopt(args, sfl, lfl)
- except AttributeError:
- # Before Python 2.3, there was no gnu_getopt support.
- # So we can't parse intermixed positional arguments
- # and options.
- lopts,args = getopt.getopt(args, sfl, lfl)
-
- for o,v in lopts:
- back[o].apply(state, v)
- return state, args
-
- def _command(self, cmd):
- if not self.ctable.has_key(cmd):
- self.error("unknown command: '%s'" % cmd)
- return self.ctable[cmd]
-
- def parse(self, args):
- if not args:
- self.print_small_help()
- sys.exit(0)
-
- cmd = None
- try:
- cmd = self._extract_command(args)
- opts = self.gopts[:]
- if cmd:
- opts.extend(cmd.opts)
- args.remove(cmd.name)
- state, args = self._fancy_getopt(args, opts)
- except getopt.GetoptError, e:
- self.error(e, cmd)
-
- # Handle builtins
- if self.version is not None and state["version"]:
- self.print_version()
- sys.exit(0)
- if state["help"]: # special case for --help
- if cmd:
- self.print_command_help(cmd)
- sys.exit(0)
- cmd = self.ctable["help"]
- else:
- if cmd is None:
- self.error("command argument required")
- if str(cmd) == "help":
- cmd(*args)
- sys.exit(0)
- return cmd, args, state
-
- def error(self, s, cmd=None):
- print >>sys.stderr, "%s: %s" % (self.progname, s)
- if cmd is not None:
- self.print_command_help(cmd)
- else:
- self.print_small_help()
- sys.exit(1)
- def print_small_help(self):
- print "Type '%s help' for usage" % self.progname
- def print_usage_line(self):
- print "usage: %s <subcommand> [options...] [args...]\n" % self.progname
- def print_command_list(self):
- print "Available commands (use '%s help COMMAND' for more details):\n" \
- % self.progname
- cmds = self.ctable.keys()
- cmds.sort()
- indent = max(map(len, cmds))
- for c in cmds:
- h = self.ctable[c].short_help()
- print " %-*s " % (indent, c),
- self._print_wrapped(h, indent+6)
- def print_command_help(self, cmd):
- cmd = self.ctable[str(cmd)]
- print 'usage: %s %s\n' % (self.progname, cmd.usage)
- self._print_wrapped(cmd.help)
- def print_opts(opts, self=self):
- if not opts: return
- flags = [o.repr_flags() for o in opts]
- indent = max(map(len, flags))
- for f,o in zip(flags, opts):
- print " %-*s :" % (indent, f),
- self._print_wrapped(o.help, indent+5)
- print '\nCommand options:'
- print_opts(cmd.opts)
- print '\nGlobal options:'
- print_opts(self.gopts)
-
- def print_version(self):
- print self.version
-
-###############################################################################
-# Options and Commands description
-###############################################################################
-
-global_opts = [
- Option("-F", "--force",
- help="force operation even if the working copy is not clean, or "
- "there are pending updates"),
- Option("-n", "--dry-run",
- help="don't actually change anything, just pretend; "
- "implies --show-changes"),
- Option("-s", "--show-changes",
- help="show subversion commands that make changes"),
- Option("-v", "--verbose",
- help="verbose mode: output more information about progress"),
- OptionArg("-u", "--username",
- default=None,
- help="invoke subversion commands with the supplied username"),
- OptionArg("-p", "--password",
- default=None,
- help="invoke subversion commands with the supplied password"),
- OptionArg("-c", "--config-dir", metavar="DIR",
- default=None,
- help="cause subversion commands to consult runtime config directory DIR"),
-]
-
-common_opts = [
- Option("-b", "--bidirectional",
- value=True,
- default=False,
- help="remove reflected and initialized revisions from merge candidates. "
- "Not required but may be specified to speed things up slightly"),
- OptionArg("-f", "--commit-file", metavar="FILE",
- default="svnmerge-commit-message.txt",
- help="set the name of the file where the suggested log message "
- "is written to"),
- Option("-M", "--record-only",
- value=True,
- default=False,
- help="do not perform an actual merge of the changes, yet record "
- "that a merge happened"),
- OptionArg("-r", "--revision",
- metavar="REVLIST",
- default="",
- help="specify a revision list, consisting of revision numbers "
- 'and ranges separated by commas, e.g., "534,537-539,540"'),
- OptionArg("-S", "--source", "--head",
- default=None,
- help="specify a merge source for this branch. It can be either "
- "a working directory path, a full URL, or an unambiguous "
- "substring of one of the locations for which merge tracking was "
- "already initialized. Needed only to disambiguate in case of "
- "multiple merge sources"),
-]
-
-command_table = {
- "init": (action_init,
- "init [OPTION...] [SOURCE]",
- """Initialize merge tracking from SOURCE on the current working
- directory.
-
- If SOURCE is specified, all the revisions in SOURCE are marked as already
- merged; if this is not correct, you can use --revision to specify the
- exact list of already-merged revisions.
-
- If SOURCE is omitted, then it is computed from the "svn cp" history of the
- current working directory (searching back for the branch point); in this
- case, %s assumes that no revision has been integrated yet since
- the branch point (unless you teach it with --revision).""" % NAME,
- [
- "-f", "-r", # import common opts
- OptionArg("-L", "--location-type",
- dest="location-type",
- default="path",
- help="Use this type of location identifier in the new " +
- "Subversion properties; 'uuid', 'url', or 'path' " +
- "(default)"),
- ]),
-
- "avail": (action_avail,
- "avail [OPTION...] [PATH]",
- """Show unmerged revisions available for PATH as a revision list.
- If --revision is given, the revisions shown will be limited to those
- also specified in the option.
-
- When svnmerge is used to bidirectionally merge changes between a
- branch and its source, it is necessary to not merge the same changes
- forth and back: e.g., if you committed a merge of a certain
- revision of the branch into the source, you do not want that commit
- to appear as available to merged into the branch (as the code
- originated in the branch itself!). svnmerge will automatically
- exclude these so-called "reflected" revisions.""",
- [
- Option("-A", "--all",
- dest="avail-showwhat",
- value=["blocked", "avail"],
- default=["avail"],
- help="show both available and blocked revisions (aka ignore "
- "blocked revisions)"),
- "-b",
- Option("-B", "--blocked",
- dest="avail-showwhat",
- value=["blocked"],
- help="show the blocked revision list (see '%s block')" % NAME),
- Option("-d", "--diff",
- dest="avail-display",
- value="diffs",
- default="revisions",
- help="show corresponding diff instead of revision list"),
- Option("--summarize",
- dest="avail-display",
- value="summarize",
- help="show summarized diff instead of revision list"),
- Option("-l", "--log",
- dest="avail-display",
- value="logs",
- help="show corresponding log history instead of revision list"),
- "-r",
- "-S",
- ]),
-
- "integrated": (action_integrated,
- "integrated [OPTION...] [PATH]",
- """Show merged revisions available for PATH as a revision list.
- If --revision is given, the revisions shown will be limited to
- those also specified in the option.""",
- [
- Option("-d", "--diff",
- dest="integrated-display",
- value="diffs",
- default="revisions",
- help="show corresponding diff instead of revision list"),
- Option("-l", "--log",
- dest="integrated-display",
- value="logs",
- help="show corresponding log history instead of revision list"),
- "-r",
- "-S",
- ]),
-
- "rollback": (action_rollback,
- "rollback [OPTION...] [PATH]",
- """Rollback previously merged in revisions from PATH. The
- --revision option is mandatory, and specifies which revisions
- will be rolled back. Only the previously integrated merges
- will be rolled back.
-
- When manually rolling back changes, --record-only can be used to
- instruct %s that a manual rollback of a certain revision
- already happened, so that it can record it and offer that
- revision for merge henceforth.""" % (NAME),
- [
- "-f", "-r", "-S", "-M", # import common opts
- ]),
-
- "merge": (action_merge,
- "merge [OPTION...] [PATH]",
- """Merge in revisions into PATH from its source. If --revision is omitted,
- all the available revisions will be merged. In any case, already merged-in
- revisions will NOT be merged again.
-
- When svnmerge is used to bidirectionally merge changes between a
- branch and its source, it is necessary to not merge the same changes
- forth and back: e.g., if you committed a merge of a certain
- revision of the branch into the source, you do not want that commit
- to appear as available to merged into the branch (as the code
- originated in the branch itself!). svnmerge will automatically
- exclude these so-called "reflected" revisions.
-
- When manually merging changes across branches, --record-only can
- be used to instruct %s that a manual merge of a certain revision
- already happened, so that it can record it and not offer that
- revision for merge anymore. Conversely, when there are revisions
- which should not be merged, use '%s block'.""" % (NAME, NAME),
- [
- "-b", "-f", "-r", "-S", "-M", # import common opts
- ]),
-
- "block": (action_block,
- "block [OPTION...] [PATH]",
- """Block revisions within PATH so that they disappear from the available
- list. This is useful to hide revisions which will not be integrated.
- If --revision is omitted, it defaults to all the available revisions.
-
- Do not use this option to hide revisions that were manually merged
- into the branch. Instead, use '%s merge --record-only', which
- records that a merge happened (as opposed to a merge which should
- not happen).""" % NAME,
- [
- "-f", "-r", "-S", # import common opts
- ]),
-
- "unblock": (action_unblock,
- "unblock [OPTION...] [PATH]",
- """Revert the effect of '%s block'. If --revision is omitted, all the
- blocked revisions are unblocked""" % NAME,
- [
- "-f", "-r", "-S", # import common opts
- ]),
-
- "uninit": (action_uninit,
- "uninit [OPTION...] [PATH]",
- """Remove merge tracking information from PATH. It cleans any kind of merge
- tracking information (including the list of blocked revisions). If there
- are multiple sources, use --source to indicate which source you want to
- forget about.""",
- [
- "-f", "-S", # import common opts
- ]),
-}
-
-
-def main(args):
- global opts
-
- # Initialize default options
- opts = default_opts.copy()
- logs.clear()
-
- optsparser = CommandOpts(global_opts, common_opts, command_table,
- version="%%prog r%s\n modified: %s\n\n"
- "Copyright (C) 2004,2005 Awarix Inc.\n"
- "Copyright (C) 2005, Giovanni Bajo"
- % (__revision__, __date__))
-
- cmd, args, state = optsparser.parse(args)
- opts.update(state)
-
- source = opts.get("source", None)
- branch_dir = "."
-
- if str(cmd) == "init":
- if len(args) == 1:
- source = args[0]
- elif len(args) > 1:
- optsparser.error("wrong number of parameters", cmd)
- elif str(cmd) in command_table.keys():
- if len(args) == 1:
- branch_dir = args[0]
- elif len(args) > 1:
- optsparser.error("wrong number of parameters", cmd)
- else:
- assert False, "command not handled: %s" % cmd
-
- # Validate branch_dir
- if not is_wc(branch_dir):
- if str(cmd) == "avail":
- info = None
- # it should be noted here that svn info does not error exit
- # if an invalid target is specified to it (as is
- # intuitive). so the try, except code is not absolutely
- # necessary. but, I retain it to indicate the intuitive
- # handling.
- try:
- info = get_svninfo(branch_dir)
- except LaunchError:
- pass
- # test that we definitely targeted a subversion directory,
- # mirroring the purpose of the earlier is_wc() call
- if info is None or not info.has_key("Node Kind") or info["Node Kind"] != "directory":
- error('"%s" is neither a valid URL, nor a working directory' % branch_dir)
- else:
- error('"%s" is not a subversion working directory' % branch_dir)
-
- # give out some hints as to potential pathids
- PathIdentifier.hint(branch_dir)
- if source: PathIdentifier.hint(source)
-
- # Extract the integration info for the branch_dir
- branch_props = get_merge_props(branch_dir)
-
- # Calculate source_url and source_path
- report("calculate source path for the branch")
- if not source:
- if str(cmd) == "init":
- cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(branch_dir)
- if not cf_source:
- error('no copyfrom info available. '
- 'Explicit source argument (-S/--source) required.')
- opts["source-url"] = get_repo_root(branch_dir) + cf_source
- opts["source-pathid"] = PathIdentifier.from_target(opts["source-url"])
-
- if not opts["revision"]:
- opts["revision"] = "1-" + cf_rev
- else:
- opts["source-pathid"] = get_default_source(branch_dir, branch_props)
- opts["source-url"] = opts["source-pathid"].get_url()
-
- assert is_pathid(opts["source-pathid"])
- assert is_url(opts["source-url"])
- else:
- # The source was given as a command line argument and is stored in
- # SOURCE. Ensure that the specified source does not end in a /,
- # otherwise it's easy to have the same source path listed more
- # than once in the integrated version properties, with and without
- # trailing /'s.
- source = rstrip(source, "/")
- if not is_wc(source) and not is_url(source):
- # Check if it is a substring of a pathid recorded
- # within the branch properties.
- found = []
- for pathid in branch_props.keys():
- if pathid.match_substring(source):
- found.append(pathid)
- if len(found) == 1:
- # (assumes pathid is a repository-relative-path)
- source_pathid = found[0]
- source = source_pathid.get_url()
- else:
- error('"%s" is neither a valid URL, nor an unambiguous '
- 'substring of a repository path, nor a working directory'
- % source)
- else:
- source_pathid = PathIdentifier.from_target(source)
-
- source_pathid = PathIdentifier.from_target(source)
- if str(cmd) == "init" and \
- source_pathid == PathIdentifier.from_target("."):
- error("cannot init integration source path '%s'\n"
- "Its repository-relative path must differ from the "
- "repository-relative path of the current directory."
- % source_pathid)
- opts["source-pathid"] = source_pathid
- opts["source-url"] = target_to_url(source)
-
- # Sanity check source_url
- assert is_url(opts["source-url"])
- # SVN does not support non-normalized URL (and we should not
- # have created them)
- assert opts["source-url"].find("/..") < 0
-
- report('source is "%s"' % opts["source-url"])
-
- # Get previously merged revisions (except when command is init)
- if str(cmd) != "init":
- opts["merged-revs"] = merge_props_to_revision_set(branch_props,
- opts["source-pathid"])
-
- # Perform the action
- cmd(branch_dir, branch_props)
-
-
-if __name__ == "__main__":
- try:
- main(sys.argv[1:])
- except LaunchError, (ret, cmd, out):
- err_msg = "command execution failed (exit code: %d)\n" % ret
- err_msg += cmd + "\n"
- err_msg += "".join(out)
- error(err_msg)
- except KeyboardInterrupt:
- # Avoid traceback on CTRL+C
- print "aborted by user"
- sys.exit(1)
diff --git a/abs/extra/swig/PKGBUILD b/abs/extra/swig/PKGBUILD
index bfe0512..e7f9994 100644
--- a/abs/extra/swig/PKGBUILD
+++ b/abs/extra/swig/PKGBUILD
@@ -1,29 +1,38 @@
-# $Id: PKGBUILD 94475 2010-10-07 11:10:49Z stephane $
-# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# $Id: PKGBUILD 163234 2012-07-11 16:22:59Z stephane $
# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=swig
-pkgver=2.0.1
-pkgrel=1
+pkgver=2.0.7
+pkgrel=2
pkgdesc="Generate scripting interfaces to C/C++ code"
arch=('i686' 'x86_64')
url="http://www.swig.org/"
license=('custom')
-depends=('gcc-libs' 'zlib')
-source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-sha1sums=('da5a1e396597be683a62d349d71802c33fb0f644')
+depends=('zlib' 'pcre')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ pyint_fromsize_t.diff
+ upstream_r13128.diff)
+sha1sums=('307020fb6437092e32c9c1bd9af8bccb1645b529'
+ '59ee179b57920d255c58afe45632b896e40b5b7d'
+ '8f0c5ae6a46c22606cc88c649bfd0a31f061a963')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # FS#30624
+ patch -Np1 -i ../pyint_fromsize_t.diff
+
+ # Fix call to Swig_name_decl
+ patch -Np1 -i ../upstream_r13128.diff
+
./configure --prefix=/usr
- make || return 1
+ make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
- install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
- install -D -m644 LICENSE-UNIVERSITIES "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE-UNIVERSITIES"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+ install -D -m644 LICENSE-UNIVERSITIES "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE-UNIVERSITIES
}
-
-# vim: set noexpandtab tabstop=8 shiftwidth=8 textwidth=132 autoindent
diff --git a/abs/extra/swig/pyint_fromsize_t.diff b/abs/extra/swig/pyint_fromsize_t.diff
new file mode 100644
index 0000000..1c7727a
--- /dev/null
+++ b/abs/extra/swig/pyint_fromsize_t.diff
@@ -0,0 +1,18 @@
+Description: Py3k: Map PyInt_FromSize_t to PyLong_FromSize_t
+ The latest SWIG version introduced a usage of PyInt_FromSize_t, but
+ does not define a compatibility macro for Python 3k as for the other
+ PyInt_... functions. This patch adds that macro.
+
+Author: Torsten Landschoff <torsten@debian.org>
+
+
+--- swig2.0-2.0.7.orig/Lib/python/pyhead.swg
++++ swig2.0-2.0.7/Lib/python/pyhead.swg
+@@ -5,6 +5,7 @@
+ #define PyInt_Check(x) PyLong_Check(x)
+ #define PyInt_AsLong(x) PyLong_AsLong(x)
+ #define PyInt_FromLong(x) PyLong_FromLong(x)
++#define PyInt_FromSize_t(x) PyLong_FromSize_t(x)
+ #define PyString_Check(name) PyBytes_Check(name)
+ #define PyString_FromString(x) PyUnicode_FromString(x)
+ #define PyString_Format(fmt, args) PyUnicode_Format(fmt, args)
diff --git a/abs/extra/swig/upstream_r13128.diff b/abs/extra/swig/upstream_r13128.diff
new file mode 100644
index 0000000..d7d74d7
--- /dev/null
+++ b/abs/extra/swig/upstream_r13128.diff
@@ -0,0 +1,73 @@
+From: Klaus KĂ€mpf <kkaempf@suse.de>
+Subject: Fix call to Swig_name_decl (upstream ID 3530078)
+
+Origin: upstream, http://swig.svn.sourceforge.net/viewvc/swig?view=revision&revision=13128
+Bug: http://sourceforge.net/tracker/?func=detail&aid=3530078&group_id=1645&atid=101645
+Bug-Debian: http://bugs.debian.org/675196
+---
+ Examples/test-suite/errors/expected.log | 26 +++++++++++++-------------
+ Source/Modules/lang.cxx | 4 ++--
+ 2 files changed, 15 insertions(+), 15 deletions(-)
+
+--- a/Source/Modules/lang.cxx
++++ b/Source/Modules/lang.cxx
+@@ -2623,7 +2623,7 @@ int Language::constructorDeclaration(Nod
+ Delete(expected_name_resolved);
+ }
+ if (illegal_name) {
+- Swig_warning(WARN_LANG_RETURN_TYPE, input_file, line_number, "Function %s must have a return type. Ignored.\n", Swig_name_decl(name));
++ Swig_warning(WARN_LANG_RETURN_TYPE, input_file, line_number, "Function %s must have a return type. Ignored.\n", Swig_name_decl(n));
+ Swig_restore(n);
+ return SWIG_NOWRAP;
+ }
+@@ -2760,7 +2760,7 @@ int Language::destructorDeclaration(Node
+ }
+
+ if (illegal_name) {
+- Swig_warning(WARN_LANG_ILLEGAL_DESTRUCTOR, input_file, line_number, "Illegal destructor name %s. Ignored.\n", Swig_name_decl(name));
++ Swig_warning(WARN_LANG_ILLEGAL_DESTRUCTOR, input_file, line_number, "Illegal destructor name %s. Ignored.\n", Swig_name_decl(n));
+ Swig_restore(n);
+ Delete(expected_name);
+ return SWIG_NOWRAP;
+--- a/Examples/test-suite/errors/expected.log
++++ b/Examples/test-suite/errors/expected.log
+@@ -227,17 +227,17 @@ cpp_extend_destructors.i:87: Warning 302
+ cpp_extend_destructors.i:85: Warning 302: previous definition of '~JStruct'.
+ cpp_extend_destructors.i:100: Warning 302: Identifier '~LStruct' redefined (ignored),
+ cpp_extend_destructors.i:98: Warning 302: previous definition of '~LStruct'.
+-cpp_extend_destructors.i:24: Warning 521: Illegal destructor name ~NOT_CStruct. Ignored.
+-cpp_extend_destructors.i:30: Warning 521: Illegal destructor name ~NOT_DStruct. Ignored.
+-cpp_extend_destructors.i:44: Warning 521: Illegal destructor name ~NOT_EStruct. Ignored.
+-cpp_extend_destructors.i:50: Warning 521: Illegal destructor name ~NOT_FStruct. Ignored.
+-cpp_extend_destructors.i:65: Warning 521: Illegal destructor name ~NOT_GStruct. Ignored.
+-cpp_extend_destructors.i:72: Warning 521: Illegal destructor name ~NOT_HStruct. Ignored.
+-cpp_extend_destructors.i:81: Warning 521: Illegal destructor name ~NOT_IStruct. Ignored.
+-cpp_extend_destructors.i:86: Warning 521: Illegal destructor name ~NOT_JStruct. Ignored.
+-cpp_extend_destructors.i:92: Warning 521: Illegal destructor name ~NOT_KStruct. Ignored.
+-cpp_extend_destructors.i:99: Warning 521: Illegal destructor name ~NOT_LStruct< int >. Ignored.
+-cpp_extend_destructors.i:99: Warning 521: Illegal destructor name ~NOT_LStruct< short >. Ignored.
++cpp_extend_destructors.i:24: Warning 521: Illegal destructor name CStruct::~NOT_CStruct(). Ignored.
++cpp_extend_destructors.i:30: Warning 521: Illegal destructor name DStruct::~NOT_DStruct(). Ignored.
++cpp_extend_destructors.i:44: Warning 521: Illegal destructor name EStruct::~NOT_EStruct(). Ignored.
++cpp_extend_destructors.i:50: Warning 521: Illegal destructor name FStruct::~NOT_FStruct(). Ignored.
++cpp_extend_destructors.i:65: Warning 521: Illegal destructor name GStruct::~NOT_GStruct(). Ignored.
++cpp_extend_destructors.i:72: Warning 521: Illegal destructor name HStruct::~NOT_HStruct(). Ignored.
++cpp_extend_destructors.i:81: Warning 521: Illegal destructor name IStruct::~NOT_IStruct(). Ignored.
++cpp_extend_destructors.i:86: Warning 521: Illegal destructor name JStruct::~NOT_JStruct(). Ignored.
++cpp_extend_destructors.i:92: Warning 521: Illegal destructor name KStruct::~NOT_KStruct(). Ignored.
++cpp_extend_destructors.i:99: Warning 521: Illegal destructor name LStruct< int >::~NOT_LStruct(). Ignored.
++cpp_extend_destructors.i:99: Warning 521: Illegal destructor name LStruct< short >::~NOT_LStruct(). Ignored.
+
+ :::::::::::::::::::::::::::::::: cpp_extend_redefine.i :::::::::::::::::::::::::::::::::::
+ cpp_extend_redefine.i:9: Warning 302: Identifier 'bar' redefined by %extend (ignored),
+@@ -312,8 +312,8 @@ cpp_nested.i:12: Warning 325: Nested cla
+ cpp_no_access.i:3: Warning 319: No access specifier given for base class 'foo' (ignored).
+
+ :::::::::::::::::::::::::::::::: cpp_no_return_type.i :::::::::::::::::::::::::::::::::::
+-cpp_no_return_type.i:6: Warning 504: Function R must have a return type. Ignored.
+-cpp_no_return_type.i:10: Warning 504: Function UU must have a return type. Ignored.
++cpp_no_return_type.i:6: Warning 504: Function S::R() must have a return type. Ignored.
++cpp_no_return_type.i:10: Warning 504: Function U::UU() must have a return type. Ignored.
+
+ :::::::::::::::::::::::::::::::: cpp_nobase.i :::::::::::::::::::::::::::::::::::
+ cpp_nobase.i:3: Warning 401: Nothing known about base class 'Bar'. Ignored.
diff --git a/abs/extra/syslinux/PKGBUILD b/abs/extra/syslinux/PKGBUILD
index e2c9eb8..f8bcb92 100644
--- a/abs/extra/syslinux/PKGBUILD
+++ b/abs/extra/syslinux/PKGBUILD
@@ -1,22 +1,30 @@
-# $Id: PKGBUILD 97504 2010-10-30 20:11:46Z tpowa $
+# $Id: PKGBUILD 155387 2012-04-03 08:18:06Z thomas $
# Maintainer: Thomas BĂ€chler <thomas@archlinux.org>
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
pkgname=syslinux
-pkgver=4.03
-pkgrel=1
+pkgver=4.05
+pkgrel=4
arch=('i686' 'x86_64')
-pkgdesc="Collection of flexible boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE"
+pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE"
url="http://syslinux.zytor.com/"
license=('GPL2')
depends=('perl' 'glibc')
optdepends=('perl-passwd-md5: For md5pass'
'perl-digest-sha1: For sha1pass'
- 'mtools: For mkdiskimage and syslinux'
+ 'mtools: For mkdiskimage and syslinux support'
)
makedepends=('nasm')
+backup=('boot/syslinux/syslinux.cfg')
+install=syslinux.install
source=(http://www.kernel.org/pub/linux/utils/boot/syslinux/$pkgname-${pkgver}.tar.bz2
- syslinux-dont-build-dos-windows-targets.patch)
+ syslinux-dont-build-dos-windows-targets.patch
+ syslinux.cfg
+ syslinux-install_update)
+md5sums=('82299242418385da1274c9479a778cb2'
+ '1528c376e43f0eaccaa80d8ad1bc13b4'
+ '832595501944fbcabcdc1207f4724fe7'
+ '680750f73dc2e587ac567d057d485813')
build() {
# Do not try to build syslinux with our default LDFLAGS, it will fail
@@ -25,13 +33,19 @@ build() {
# Do not try to build the Windows or DOS installers
patch -p1 -i "$srcdir"/syslinux-dont-build-dos-windows-targets.patch
# Fix FHS manpage path
- sed 's|/usr/man|/usr/share/man|g' -i MCONFIG
+ sed 's|/usr/man|/usr/share/man|g' -i mk/syslinux.mk
make
}
package() {
cd "$srcdir"/$pkgname-${pkgver}
make INSTALLROOT="$pkgdir" AUXDIR=/usr/lib/syslinux install
+
+ # Install the default configuration
+ install -D -m644 "$srcdir"/syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg
+ # Install the installation and update script
+ # This script is maintained at git://gist.github.com/772138.git
+ install -D -m755 "$srcdir"/syslinux-install_update "$pkgdir"/usr/sbin/syslinux-install_update
+ # move extlinux binary to /usr/sbin
+ mv "$pkgdir"/sbin/extlinux "$pkgdir"/usr/sbin/extlinux
}
-md5sums=('a7ca38a0a5786b6efae8fb01a1ae8070'
- '895722a392f3d798a7cc24bc154656f0')
diff --git a/abs/extra/syslinux/syslinux-dont-build-dos-windows-targets.patch b/abs/extra/syslinux/syslinux-dont-build-dos-windows-targets.patch
index 2bac551..2b86ab8 100644
--- a/abs/extra/syslinux/syslinux-dont-build-dos-windows-targets.patch
+++ b/abs/extra/syslinux/syslinux-dont-build-dos-windows-targets.patch
@@ -1,11 +1,11 @@
diff -Nur syslinux-4.02.orig//Makefile syslinux-4.02//Makefile
--- syslinux-4.02.orig//Makefile 2010-07-21 21:33:13.000000000 +0200
+++ syslinux-4.02//Makefile 2010-07-22 11:14:03.325522937 +0200
-@@ -55,7 +55,7 @@
+@@ -54,7 +54,7 @@
# files that depend only on the B phase, but may have to be regenerated
# for "make installer".
BSUBDIRS = codepage com32 lzo core memdisk modules mbr memdump gpxe sample \
-- libinstaller dos win32 win64 dosutil
+- diag libinstaller dos win32 win64 dosutil
+ libinstaller
ITARGET =
IOBJECTS = $(ITARGET) \
diff --git a/abs/extra/syslinux/syslinux-install_update b/abs/extra/syslinux/syslinux-install_update
new file mode 100644
index 0000000..cd1baa5
--- /dev/null
+++ b/abs/extra/syslinux/syslinux-install_update
@@ -0,0 +1,463 @@
+#!/bin/bash
+#
+# Sylinux Installer / Updater Scripts
+# Copyright (C) 2011 Matthew Gyurgyik <pyther@pyther.net>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+#-----------------
+# Exit Codes:
+# 1 - get_boot_device or other function failed
+# 2 - install/update failed
+# 3 - set_active failed
+# 4 - install_mbr failed
+#
+shopt -s nullglob
+
+libpath="/usr/lib/syslinux"
+bootpath="/boot/syslinux"
+extlinux="/usr/sbin/extlinux"
+
+autoupdate_file=/boot/syslinux/SYSLINUX_AUTOUPDATE
+com32_files=(menu.c32 vesamenu.c32 chain.c32 hdt.c32 reboot.c32 poweroff.com)
+pciids_file=/usr/share/hwdata/pci.ids
+
+## Helper functions ##
+# Taken from libui-sh
+# $1 needle
+# $2 set (array) haystack
+check_is_in() {
+ local needle="$1" element
+ shift
+ for element; do
+ [[ $element = $needle ]] && return 0
+ done
+ return 1
+}
+
+# return true when blockdevice is an md raid, otherwise return a unset value
+# get all devices that are part of raid device $1
+device_is_raid() {
+ [[ $1 && -f /proc/mdstat ]] || return 1
+ local devmajor=$(stat -c %t "$1")
+ (( devmajor == 9 ))
+}
+
+mdraid_all_slaves() {
+ local slave slaves
+ for slave in /sys/class/block/${1##*/}/slaves/*; do
+ source "$slave/uevent"
+ slaves="$slaves/dev/$DEVNAME "
+ unset DEVNAME
+ done
+ echo $slaves
+}
+
+# Check /sys/block to see if device is partitioned
+# If we have a partitioned block device (sda1) /sys/block/sda1/dev will not exist
+# However, if we have an unpartitioned block device (sda) /sys/block/sda/dev will exist
+dev_is_part() {
+ # $1 - blockdevice
+ local dev=$1
+
+ # If block device uevent file should be found
+ # If a partition is passed in path shouldn't exist
+ if [[ $dev = *cciss* ]]; then
+ [[ -f /sys/block/cciss\!${dev##*/}/dev ]] && return 1
+ elif [[ $dev = *ida* ]]; then
+ [[ -f /sys/block/ida\!${dev##*/}/dev ]] && return 1
+ else
+ [[ -f /sys/block/${dev##*/}/dev ]] && return 1
+ fi
+
+ return 0
+}
+
+# If EFI PART is present in the first 8 bytes then it must be a GPT disk
+device_is_gpt() {
+ local partsig=$(dd if="$1" skip=64 bs=8 count=1 2>/dev/null)
+ [[ $partsig = "EFI PART" ]]
+}
+
+clear_gpt_attr2() {
+ # $1 - Block Device, no partitions
+ local disk=$1
+
+ # Special Exception for cciss controllers
+ if [[ $disk = *cciss* ]]; then
+ for part in /dev/cciss/${disk##*/}*p*; do
+ local partnum="${part##*[[:alpha:]]}"
+ sgdisk "$disk" --attributes="$partnum":clear:2 &>/dev/null
+ done
+ # Smart 2 Controllers
+ elif [[ $disk = *ida* ]]; then
+ for part in /dev/ida/${disk##*/}*p*; do
+ local partnum="${part##*[[:alpha:]]}"
+ sgdisk "$disk" --attributes="$partnum":clear:2 &>/dev/null
+ done
+ else
+ for part in /sys/block/${disk##*/}/${disk##*/}*; do
+ local partnum="${part##*[[:alpha:]]}"
+ sgdisk "$disk" --attributes="$partnum":clear:2 &>/dev/null
+ done
+ fi
+ return 0
+}
+
+usage() {
+cat << EOF
+usage: $0 options
+
+This script will install or upgrade Syslinux
+
+OPTIONS:
+ -h Show this message
+ -i Install Syslinux
+ -u Update Syslinux
+ -a Set Boot flag on boot partiton
+ -m Install Syslinux MBR
+ -s Updates Syslinux if /boot/syslinux/SYSLINUX_AUTOUPDATE exists
+
+ Arguments Required:
+ -c Chroot install (ex: -c /mnt)
+
+Example Usage: syslinux-install_update.sh -i -a -m (install, set boot flag, install mbr)
+ syslinux-install_update.sh -u (update)
+EOF
+}
+
+# Trys to find the partition that /boot resides on
+# This will either be on /boot or / (root)
+getBoot() {
+ if [[ ! -d "$bootpath" ]]; then
+ echo "Could not find $bootpath"
+ echo "Is boot mounted? Is Syslinux installed?"
+ exit 1
+ fi
+
+ syslinux_fs=(ext2 ext3 ext4 btrfs vfat)
+
+ # Use DATA from findmnt see rc.sysint for more info
+ if [[ -f /proc/self/mountinfo ]]; then
+ read rootdev rootfs < <(findmnt -run -t noautofs -o SOURCE,FSTYPE "$CHROOT/")
+ read bootdev bootfs < <(findmnt -run -t noautofs -o SOURCE,FSTYPE "$CHROOT/boot")
+ else
+ echo "Could not find /proc/self/mountinfo"
+ echo "Are you running a kernel greater than 2.6.24?"
+ exit 1
+ fi
+
+ if [[ $bootfs ]]; then
+ if ! check_is_in "$bootfs" "${syslinux_fs[@]}"; then
+ echo "/boot file system is not supported by Syslinux"
+ exit 1
+ fi
+ boot="boot"
+ bootpart="$bootdev"
+ elif [[ $rootfs ]]; then
+ if ! check_is_in "$rootfs" "${syslinux_fs[@]}"; then
+ echo "/ (root) file system is not supported by Syslinux"
+ exit 1
+ fi
+ boot="root"
+ bootpart="$rootdev"
+ else
+ echo "Could not find filesystem on / (root) or /boot."
+ exit 1
+ fi
+}
+
+# We store the partition table type either gpt or mbr in var ptb
+# In rare cases a user could have one raid disk using mbr and another using gpt
+# In such cases we accept that the output may be incomplete
+
+# Calls get_ptb() for $bootpart or for all device in RAID
+declare -A bootdevs
+get_boot_devices() {
+ if device_is_raid "$bootpart"; then
+ slaves=$(mdraid_all_slaves "$bootpart")
+
+ for slave in ${slaves[@]}; do
+ local disk="${slave%%[[:digit:]]*}"
+ device_is_gpt "$disk" && local ptb="GPT" || local ptb="MBR"
+ bootdevs[$slave]="$ptb"
+ done
+ else
+ local disk="${bootpart%%[[:digit:]]*}"
+ device_is_gpt "$disk" && local ptb="GPT" || local ptb="MBR"
+ bootdevs[$bootpart]="$ptb"
+ fi
+}
+
+# Function Assumes the boot partition should be marked as active
+# All other partitions should not have the boot flag set
+set_active() {
+ # If any bootdev is a block device without partitions bail
+ # we want to set the boot flag on partitioned disk
+ for dev in "${!bootdevs[@]}"; do
+ dev_is_part $dev || { echo "$dev - is a block device. Aborting set_active!"; return 1; }
+ done
+
+ # Clear BIOS Bootable Legacy Attribute for GPT drives
+ # In rare cases where a RAID device has slaves on the same block device
+ # Attribute 2 will be cleared for each partition multiple times
+ for dev in "${!bootdevs[@]}"; do
+ local ptb="${bootdevs[$dev]}"
+ if [[ "$ptb" = GPT ]]; then
+ local disk="${dev%%[[:digit:]]*}" #ex: /dev/sda
+ clear_gpt_attr2 "$disk"
+ fi
+ done
+
+ # Set the boot flag on bootdevs (generated from get_boot_devices)
+ for part in "${!bootdevs[@]}"; do
+ local ptb="${bootdevs[$part]}"
+ local partnum="${part##*[[:alpha:]]}"
+ case "$part" in
+ *[[:digit:]]p[[:digit:]]*)
+ local disk="${part%%p$partnum}" # get everything before p1
+ ;;
+ *)
+ local disk="${part%%[[:digit:]]*}"
+ ;;
+ esac
+
+ if [[ "$ptb" = MBR ]]; then
+ if sfdisk "$disk" -A "$partnum" &>/dev/null; then
+ echo "Boot Flag Set - $part"
+ else
+ echo "FAILED to Set the boot flag on $part"
+ exit 3
+ fi
+ elif [[ "$ptb" = GPT ]]; then
+ if sgdisk "$disk" --attributes="$partnum":set:2 &>/dev/null; then
+ echo "Attribute Legacy Bios Bootable Set - $part"
+ else
+ echo "FAILED to set attribute Legacy BIOS Bootable on $part"
+ exit 3
+ fi
+ fi
+ done
+ return 0
+}
+
+install_mbr() {
+ # If any bootdev is a block device without partitions bail
+ # we want to install the mbr to a partitioned disk
+ for dev in "${!bootdevs[@]}"; do
+ dev_is_part "$dev" || { echo "$dev - is a block device. Aborting MBR install"; return 1; }
+ done
+
+ for part in "${!bootdevs[@]}"; do
+ local partnum="${part##*[[:alpha:]]}"
+ case "$part" in
+ *[[:digit:]]p[[:digit:]]*)
+ local disk="${part%%p$partnum}" # get everything before p1
+ ;;
+ *)
+ local disk="${part%%[[:digit:]]*}"
+ ;;
+ esac
+ local ptb="${bootdevs[$part]}"
+
+ # We want to install to the root of the block device
+ # If the device is a partition - ABORT!
+ dev_is_part "$disk" && \
+ { echo "ABORT! MBR installation to partition ($disk)!"; exit 4;}
+
+ if [[ "$ptb" = MBR ]]; then
+ mbrfile="$libpath/mbr.bin"
+ elif [[ "$ptb" = GPT ]]; then
+ mbrfile="$libpath/gptmbr.bin"
+ fi
+
+ if dd bs=440 count=1 conv=notrunc if="$mbrfile" of="$disk" &> /dev/null; then
+ echo "Installed MBR ($mbrfile) to $disk"
+ else
+ echo "Error Installing MBR ($mbrfile) to $disk"
+ exit 4
+ fi
+ done
+ return 0
+}
+
+_install() {
+ # Copy files to /boot
+ for file in "${com32_files[@]}"; do
+ # Symlink files even if links exist
+ if [[ "$boot" = root ]]; then
+ ln -s "${libpath#$CHROOT}/$file" "$bootpath/$file" &> /dev/null
+ elif [[ "$boot" = boot ]]; then
+ cp "$libpath/$file" "$bootpath/$file"
+ fi
+ done
+
+ # Copy / Symlink pci.ids if we copy the com32 module and if pci.ids exists in the FS
+ if check_is_in "hdt.c32" "${com32_files[@]}" && [[ -f $pciids_file ]]; then
+ if [[ "$boot" = root ]]; then
+ ln -s "$pciids_file" "$bootpath/pci.ids" &> /dev/null
+ elif [[ "$boot" = boot ]]; then
+ cp "$pciids_file" "$bootpath/pci.ids" &> /dev/null
+ fi
+ fi
+
+ if device_is_raid "$bootpart"; then
+ echo "Detected RAID on /boot - installing Syslinux with --raid"
+ "$extlinux" --install "$bootpath" -r > /dev/null 2>&1
+ else
+ "$extlinux" --install "$bootpath" > /dev/null 2>&1
+ fi
+
+ if (( $? )); then
+ echo "Syslinux install failed"
+ exit 2
+ else
+ echo "Syslinux install successful"
+ fi
+
+ touch "$CHROOT/$autoupdate_file"
+}
+
+update() {
+ # Update any com and c32 files in /boot
+ if [[ "$boot" = boot ]]; then
+ for file in "$bootpath"/*.{c32,com}; do
+ file=$(basename "$file")
+ cp "$libpath/$file" "$bootpath/$file" &> /dev/null
+ done
+ if [[ -f "$bootpath/pci.ids" ]]; then
+ cp "$pciids_file" "$bootpath/pci.ids" &> /dev/null
+ fi
+ fi
+
+ if device_is_raid $bootpart; then
+ echo "Detected RAID on /boot - installing Syslinux with --raid"
+ "$extlinux" --update "$bootpath" -r &> /dev/null
+ else
+ "$extlinux" --update "$bootpath" &> /dev/null
+ fi
+
+ if (($?)); then
+ echo "Syslinux update failed"
+ exit 2
+ else
+ echo "Syslinux update successful"
+ fi
+}
+
+if (( $# == 0 )); then
+ usage
+ exit 1
+fi
+
+while getopts "c:uihmas" opt; do
+ case $opt in
+ c)
+ CHROOT=$(readlink -e "$OPTARG")
+ if [[ -z $CHROOT ]]; then
+ echo "error: chroot path ``$OPTARG does not exist";
+ exit 1
+ fi
+ ;;
+ h)
+ USAGE="True"
+ ;;
+ i)
+ INSTALL="True"
+ ;;
+ u)
+ UPDATE="True"
+ ;;
+ m)
+ MBR="True"
+ ;;
+ a)
+ SET_ACTIVE="True"
+ ;;
+ s)
+ # If AUTOUPDATE_FILE does not exist exit the script
+ if [[ -f $autoupdate_file ]]; then
+ UPDATE="True"
+ else
+ exit 0
+ fi
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+if [[ $USAGE ]]; then
+ usage
+ exit 0
+fi
+
+# Make sure only root can run our script
+if (( $(id -u) != 0 )); then
+ echo "This script must be run as root" 1>&2
+ exit 1
+fi
+
+# Display Usage Information if both Install and Update are passed
+if [[ $INSTALL && $UPDATE ]]; then
+ usage
+ exit 1
+fi
+
+# If a chroot dir is path set variables to reflect chroot
+if [[ "$CHROOT" ]]; then
+ libpath="$CHROOT$libpath"
+ bootpath="$CHROOT$bootpath"
+ extlinux="$CHROOT$extlinux"
+fi
+
+# Exit if no /boot path exists
+if ( f=("$bootpath"/*); (( ! ${#f[@]} )) ); then
+ echo "Error: $bootpath is empty!"
+ echo "Is /boot mounted?"
+ exit 1
+fi
+
+# Get the boot device if any of these options are passed
+if [[ $INSTALL || $UPDATE || $SET_ACTIVE || $MBR ]]; then
+ getBoot
+fi
+
+# Install or Update
+if [[ $INSTALL ]]; then
+ _install || exit
+elif [[ $UPDATE ]]; then
+ update || exit
+fi
+
+
+# SET_ACTIVE and MBR
+if [[ $SET_ACTIVE ]] || [[ $MBR ]]; then
+ get_boot_devices
+
+ if [[ $SET_ACTIVE ]]; then
+ set_active || exit
+ fi
+
+ if [[ $MBR ]]; then
+ install_mbr || exit
+ fi
+fi
+
+exit 0
+
+# vim: set et sw=4:
diff --git a/abs/extra/syslinux/syslinux.cfg b/abs/extra/syslinux/syslinux.cfg
new file mode 100644
index 0000000..5a588f5
--- /dev/null
+++ b/abs/extra/syslinux/syslinux.cfg
@@ -0,0 +1,79 @@
+# Config file for Syslinux -
+# /boot/syslinux/syslinux.cfg
+#
+# Comboot modules:
+# * menu.c32 - provides a text menu
+# * vesamenu.c32 - provides a graphical menu
+# * chain.c32 - chainload MBRs, partition boot sectors, Windows bootloaders
+# * hdt.c32 - hardware detection tool
+# * reboot.c32 - reboots the system
+# * poweroff.com - shutdown the system
+#
+# To Use: Copy the respective files from /usr/lib/syslinux to /boot/syslinux.
+# If /usr and /boot are on the same file system, symlink the files instead
+# of copying them.
+#
+# If you do not use a menu, a 'boot:' prompt will be shown and the system
+# will boot automatically after 5 seconds.
+#
+# Please review the wiki: https://wiki.archlinux.org/index.php/Syslinux
+# The wiki provides further configuration examples
+
+DEFAULT arch
+PROMPT 0 # Set to 1 if you always want to display the boot: prompt
+TIMEOUT 50
+# You can create syslinux keymaps with the keytab-lilo tool
+#KBDMAP de.ktl
+
+# Menu Configuration
+# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux
+UI menu.c32
+#UI vesamenu.c32
+
+# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
+MENU TITLE Arch Linux
+#MENU BACKGROUND splash.png
+MENU COLOR border 30;44 #40ffffff #a0000000 std
+MENU COLOR title 1;36;44 #9033ccff #a0000000 std
+MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
+MENU COLOR unsel 37;44 #50ffffff #a0000000 std
+MENU COLOR help 37;40 #c0ffffff #a0000000 std
+MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
+MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
+MENU COLOR msg07 37;40 #90ffffff #a0000000 std
+MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
+
+# boot sections follow
+#
+# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
+#
+#-*
+
+LABEL arch
+ MENU LABEL Arch Linux
+ LINUX ../vmlinuz-linux
+ APPEND root=/dev/sda3 ro
+ INITRD ../initramfs-linux.img
+
+LABEL archfallback
+ MENU LABEL Arch Linux Fallback
+ LINUX ../vmlinuz-linux
+ APPEND root=/dev/sda3 ro
+ INITRD ../initramfs-linux-fallback.img
+
+#LABEL windows
+# MENU LABEL Windows
+# COM32 chain.c32
+# APPEND hd0 1
+
+LABEL hdt
+ MENU LABEL HDT (Hardware Detection Tool)
+ COM32 hdt.c32
+
+LABEL reboot
+ MENU LABEL Reboot
+ COM32 reboot.c32
+
+LABEL off
+ MENU LABEL Power Off
+ COMBOOT poweroff.com
diff --git a/abs/extra/syslinux/syslinux.install b/abs/extra/syslinux/syslinux.install
new file mode 100644
index 0000000..0dc0ece
--- /dev/null
+++ b/abs/extra/syslinux/syslinux.install
@@ -0,0 +1,13 @@
+post_install() {
+ echo "==> If you want to use syslinux as your bootloader"
+ echo "==> edit /boot/syslinux/syslinux.cfg and run"
+ echo "==> # /usr/sbin/syslinux-install_update -i -a -m"
+ echo "==> to install it."
+}
+
+post_upgrade() {
+ # auto-update syslinux if /boot/syslinux/SYSLINUX_AUTOUPDATE exists
+ /usr/sbin/syslinux-install_update -s
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/unixodbc/PKGBUILD b/abs/extra/unixodbc/PKGBUILD
index 66f4a39..36a06cc 100644
--- a/abs/extra/unixodbc/PKGBUILD
+++ b/abs/extra/unixodbc/PKGBUILD
@@ -1,29 +1,28 @@
-# $Id: PKGBUILD 78429 2010-04-23 18:51:55Z andyrtr $
+# $Id: PKGBUILD 145345 2011-12-21 20:47:39Z andrea $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
-
# Contributor: Judd Vinet <jvinet@zeroflux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=unixodbc
-pkgver=2.3.0
+pkgver=2.3.1
pkgrel=1
pkgdesc="ODBC is an open specification for providing application developers with a predictable API with which to access Data Sources"
arch=('i686' 'x86_64')
license=('GPL2' 'LGPL2.1')
url="http://www.unixodbc.org/"
backup=('etc/odbc.ini' 'etc/odbcinst.ini')
-depends=('readline>=6.0' 'libtool')
+depends=('readline' 'libltdl')
options=('!libtool')
-source=(http://www.unixodbc.org/unixODBC-$pkgver.tar.gz)
-md5sums=('f2ad22cbdffe836c58987ed2332c2e99')
+source=("http://www.unixodbc.org/unixODBC-$pkgver.tar.gz")
+md5sums=('86788d4006620fa1f171c13d07fdcaab')
build() {
cd ${srcdir}/unixODBC-${pkgver}
./configure --prefix=/usr --sysconfdir=/etc
- make || return 1
+ make
}
package() {
cd ${srcdir}/unixODBC-${pkgver}
- make DESTDIR=${pkgdir} install || return 1
+ make DESTDIR=${pkgdir} install
}
diff --git a/abs/extra/valgrind/PKGBUILD b/abs/extra/valgrind/PKGBUILD
index 0ac6fd4..bf8d65e 100644
--- a/abs/extra/valgrind/PKGBUILD
+++ b/abs/extra/valgrind/PKGBUILD
@@ -1,35 +1,26 @@
-# $Id$
+# $Id: PKGBUILD 163013 2012-07-05 13:49:57Z allan $
# Maintainer: Dan McGee <dan@archlinux.org>
# Maintainer: Allan McRae <allan@archlinux.org>
pkgname=valgrind
-pkgver=3.6.1
-pkgrel=2
+pkgver=3.7.0
+pkgrel=3
pkgdesc="A tool to help find memory-management problems in programs"
arch=('i686' 'x86_64')
license=('GPL')
url="http://valgrind.org/"
-depends=('glibc>=2.14' 'glibc<2.15' 'perl')
+depends=('glibc>=2.16' 'glibc<2.17' 'perl')
makedepends=('gdb')
options=('!emptydirs')
source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2
- valgrind-3.6.1-glibc-2.14.patch
- glibc-patch-version.patch)
-md5sums=('2c3aa122498baecc9d69194057ca88f5'
- '560032ce5d27ef0c7c1af32c3fd45833'
- 'b657f0ebdde3d9aefc9fd16f9e653702')
+ valgrind-3.7.0-glibc-2.16.patch)
+md5sums=('a855fda56edf05614f099dca316d1775'
+ '8362c9c10b8d7d08d1be628a717cfba7')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
-
- # make sure our CFLAGS are respected
- sed -i -e 's:^CFLAGS="-Wno-long-long":CFLAGS="$CFLAGS -Wno-long-long":' configure.in
-
- # glibc-2.14 compatibility
- patch -Np1 -i ${srcdir}/valgrind-3.6.1-glibc-2.14.patch
-
- # prevent need to rebuild with glibc patch level version bumps
- patch -Np1 -i ${srcdir}/glibc-patch-version.patch
+
+ patch -Np1 -i ${srcdir}/valgrind-3.7.0-glibc-2.16.patch
if [ "${CARCH}" = "x86_64" ]; then
./configure --prefix=/usr --mandir=/usr/share/man --enable-only64bit
diff --git a/abs/extra/valgrind/glibc-patch-version.patch b/abs/extra/valgrind/glibc-patch-version.patch
deleted file mode 100644
index 2c6830a..0000000
--- a/abs/extra/valgrind/glibc-patch-version.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Saves having to rebuild valgrind on glibc-x.x.* patch level releases
-
-diff -Naur valgrind-3.5.0-old//glibc-2.X.supp.in valgrind-3.5.0/glibc-2.X.supp.in
---- valgrind-3.5.0-old//glibc-2.X.supp.in 2009-08-19 23:37:48.000000000 +1000
-+++ valgrind-3.5.0/glibc-2.X.supp.in 2010-05-22 19:43:08.088007038 +1000
-@@ -168,9 +168,9 @@
- Memcheck:Param
- socketcall.sendto(msg)
- fun:__sendto_nocancel
-- obj:/*libc-@GLIBC_VERSION@.so
-- obj:/*libc-@GLIBC_VERSION@.so
-- obj:/*libc-@GLIBC_VERSION@.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
- }
- {
- glibc24-64bit-padding-1c
-@@ -180,7 +180,7 @@
- fun:__nscd_get_map_ref
- fun:nscd_get*_r
- fun:*nscd*
-- obj:/*libc-@GLIBC_VERSION@.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
- }
-
-
-@@ -199,18 +199,18 @@
- Memcheck:Param
- socketcall.sendto(msg)
- fun:send
-- obj:/*libc-@GLIBC_VERSION@.so
-- obj:/*libc-@GLIBC_VERSION@.so
-- obj:/*libc-@GLIBC_VERSION@.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
- }
- {
- X11-64bit-padding-4b
- Memcheck:Param
- socketcall.send(msg)
- fun:send
-- obj:/*libc-@GLIBC_VERSION@.so
-- obj:/*libc-@GLIBC_VERSION@.so
-- obj:/*libc-@GLIBC_VERSION@.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
-+ obj:/*libc-@GLIBC_VERSION@*.so
- }
-
- ##----------------------------------------------------------------------##
diff --git a/abs/extra/valgrind/valgrind-3.6.1-glibc-2.14.patch b/abs/extra/valgrind/valgrind-3.6.1-glibc-2.14.patch
deleted file mode 100644
index 7fd2170..0000000
--- a/abs/extra/valgrind/valgrind-3.6.1-glibc-2.14.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- valgrind/configure.in.jj 2010-10-21 03:14:02.000000000 +0200
-+++ valgrind/configure.in 2010-11-05 17:09:18.674455299 +0100
-@@ -749,6 +759,13 @@ case "${GLIBC_VERSION}" in
- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- ;;
-+ 2.14)
-+ AC_MSG_RESULT(2.14 family)
-+ AC_DEFINE([GLIBC_2_14], 1, [Define to 1 if you're using glibc 2.14.x])
-+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+ ;;
- aix5)
- AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
- AC_DEFINE([AIX5_LIBC], 1, [Define to 1 if you're using AIX 5.1 or 5.2 or 5.3])
-@@ -762,7 +779,7 @@ case "${GLIBC_VERSION}" in
-
- *)
- AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
-- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.13])
-+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.14])
- AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
- AC_MSG_ERROR([or Darwin libc])
- ;;
---- valgrind/config.h.in.jj 2010-10-20 22:20:49.000000000 +0200
-+++ valgrind/config.h.in 2010-11-05 17:08:33.863454886 +0100
-@@ -33,6 +33,9 @@
- /* Define to 1 if you're using glibc 2.13.x */
- #undef GLIBC_2_13
-
-+/* Define to 1 if you're using glibc 2.14.x */
-+#undef GLIBC_2_14
-+
- /* Define to 1 if you're using glibc 2.2.x */
- #undef GLIBC_2_2
-
---- valgrind/configure.jj 2010-10-21 03:16:18.000000000 +0200
-+++ valgrind/configure 2010-11-05 17:09:39.163455396 +0100
-@@ -6367,6 +6389,18 @@ $as_echo "#define GLIBC_2_13 1" >>confde
- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- ;;
-+ 2.14)
-+ echo "$as_me:$LINENO: result: 2.14 family" >&5
-+echo "${ECHO_T}2.14 family" >&6
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define GLIBC_2_14 1
-+_ACEOF
-+
-+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+ ;;
- aix5)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: AIX 5.1 or 5.2 or 5.3" >&5
- $as_echo "AIX 5.1 or 5.2 or 5.3" >&6; }
-@@ -6387,7 +6421,7 @@ $as_echo "#define DARWIN_LIBC 1" >>confd
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
- $as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
-- as_fn_error "Valgrind requires glibc version 2.2 - 2.13" "$LINENO" 5
-+ as_fn_error "Valgrind requires glibc version 2.2 - 2.14" "$LINENO" 5
- as_fn_error "or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION" "$LINENO" 5
- as_fn_error "or Darwin libc" "$LINENO" 5
- ;;
diff --git a/abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch b/abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch
new file mode 100644
index 0000000..4d28ff1
--- /dev/null
+++ b/abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch
@@ -0,0 +1,41 @@
+diff -Naur valgrind-3.7.0-orig/configure valgrind-3.7.0/configure
+--- valgrind-3.7.0-orig/configure 2011-11-05 21:24:39.000000000 +1000
++++ valgrind-3.7.0/configure 2011-12-27 15:43:54.832120449 +1000
+@@ -6402,6 +6402,28 @@
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
++ 2.15)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5
++$as_echo "2.15 family" >&6; }
++
++$as_echo "#define GLIBC_2_15 1" >>confdefs.h
++
++ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
++ ;;
++
++ 2.16)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.16 family" >&5
++$as_echo "2.16 family" >&6; }
++
++$as_echo "#define GLIBC_2_16 1" >>confdefs.h
++
++ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
++ ;;
++
+ darwin)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
+ $as_echo "Darwin" >&6; }
+@@ -6422,7 +6433,7 @@
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
+ $as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
+- as_fn_error "Valgrind requires glibc version 2.2 - 2.14" "$LINENO" 5
++ as_fn_error "Valgrind requires glibc version 2.2 - 2.16" "$LINENO" 5
+ as_fn_error "or Darwin libc" "$LINENO" 5
+ ;;
+ esac
diff --git a/abs/extra/vorbis-tools/PKGBUILD b/abs/extra/vorbis-tools/PKGBUILD
index ae03d35..7b54e44 100644
--- a/abs/extra/vorbis-tools/PKGBUILD
+++ b/abs/extra/vorbis-tools/PKGBUILD
@@ -1,10 +1,9 @@
-# $Id: PKGBUILD 77125 2010-04-10 21:21:48Z andrea $
-# Maintainer: Eric Belanger <eric@archlinux.org>
-# Contributor: Judd Vinet <jvinet@zeroflux.org>
+# $Id: PKGBUILD 149348 2012-02-07 02:25:07Z eric $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
pkgname=vorbis-tools
pkgver=1.4.0
-pkgrel=2
+pkgrel=3
pkgdesc="Extra tools for Ogg-Vorbis"
arch=('i686' 'x86_64')
url='http://www.xiph.org/vorbis/'
@@ -17,12 +16,11 @@ build() {
cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr \
--without-speex \
- --enable-vcut || return 1
- make || return 1
+ --enable-vcut
+ make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
+ make DESTDIR="${pkgdir}" install
}
-
diff --git a/abs/extra/vte/PKGBUILD b/abs/extra/vte/PKGBUILD
index 6b2f79e..d35c20c 100644
--- a/abs/extra/vte/PKGBUILD
+++ b/abs/extra/vte/PKGBUILD
@@ -1,24 +1,38 @@
-# $Id: PKGBUILD 99488 2010-11-14 20:01:04Z ibiru $
+# $Id: PKGBUILD 142691 2011-11-12 18:51:31Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=vte
-pkgver=0.26.2
-pkgrel=1
-pkgdesc="Virtual Terminal Emulator library"
+pkgver=0.28.2
+pkgrel=3
+pkgdesc="Virtual Terminal Emulator widget for use with GTK2"
arch=('i686' 'x86_64')
license=('LGPL')
-depends=('gtk2>=2.22.0')
-options=('!libtool')
-makedepends=('pygtk>=2.22.0' 'intltool' 'gobject-introspection')
+options=('!libtool' '!emptydirs')
+depends=('gtk2' 'vte-common')
+makedepends=('pygtk' 'intltool' 'gobject-introspection' 'pygobject2-devel')
url="http://www.gnome.org"
-source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.26/vte-${pkgver}.tar.bz2)
-sha256sums=('f02c350340266c9515a98b8f69c72b4bdc53b352cd053624a63a7cb97ddec9bd')
+source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.28/vte-$pkgver.tar.xz
+make_alt_work.patch::http://git.gnome.org/browse/vte/patch/?id=b73782a28894e25ed146271f9d6c6775a6836199)
+sha256sums=('86cf0b81aa023fa93ed415653d51c96767f20b2d7334c893caba71e42654b0ae'
+ '8307623b13bcaf214cc25207ee7afaf65575d334623460311c24437fbbae14d3')
+
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr --sysconfdir=/etc \
+ cd "$srcdir/$pkgname-$pkgver"
+ #warning: type-punning to incomplete type might break strict-aliasing rules
+ export CFLAGS="$CFLAGS -fno-strict-aliasing"
+
+ patch -Np1 -R -i "$srcdir/make_alt_work.patch"
+
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \
--libexecdir=/usr/lib/vte \
--localstatedir=/var --disable-static \
- --enable-introspection
+ --enable-introspection --with-gtk=2.0
make
- make DESTDIR="${pkgdir}" install
+}
+
+package(){
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ rm "$pkgdir/usr/lib/vte/gnome-pty-helper"
}
diff --git a/abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch b/abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch
deleted file mode 100644
index 47d6ce6..0000000
--- a/abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-diff -NarU 3 vte-0.16.0.orig/python/vte.defs vte-0.16.0/python/vte.defs
---- vte-0.16.0.orig/python/vte.defs 2007-02-26 22:05:02.000000000 +0100
-+++ vte-0.16.0/python/vte.defs 2007-03-14 20:44:55.000000000 +0100
-@@ -7,6 +7,14 @@
- (gtype-id "VTE_TYPE_TERMINAL")
- )
-
-+(define-object Reaper
-+ (in-module "Vte")
-+ (parent "GObject")
-+ (c-name "VteReaper")
-+ (gtype-id "VTE_TYPE_REAPER")
-+)
-+
-+
- ;; Enumerations and flags ...
-
- (define-enum TerminalEraseBinding
-@@ -701,4 +709,14 @@
- (return-type "const-char*")
- )
-
-+;; From ../src/reaper.h
-+(define-function vte_reaper_get_type
-+ (c-name "vte_reaper_get_type")
-+ (return-type "GtkType")
-+)
-+
-+(define-function reaper_get
-+ (c-name "vte_reaper_get")
-+ (return-type "VteReaper*")
-+)
-
-diff -NarU 3 vte-0.16.0.orig/python/vte.override vte-0.16.0/python/vte.override
---- vte-0.16.0.orig/python/vte.override 2007-02-26 22:05:02.000000000 +0100
-+++ vte-0.16.0/python/vte.override 2007-03-14 20:46:12.000000000 +0100
-@@ -7,12 +7,14 @@
- #include <pygobject.h>
- #include <gtk/gtk.h>
- #include "../src/vte.h"
-+#include "../src/reaper.h"
- %%
- modulename vte
- %%
- import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
- import gtk.MenuShell as PyGtkMenuShell_Type
- import gtk.Widget as PyGtkWidget_Type
-+import gobject.GObject as PyGObject_Type
- %%
- override vte_terminal_feed kwargs
- static PyObject *
-diff -NarU 3 vte-0.16.0.orig/python/vtemodule.c vte-0.16.0/python/vtemodule.c
---- vte-0.16.0.orig/python/vtemodule.c 2007-02-26 22:05:02.000000000 +0100
-+++ vte-0.16.0/python/vtemodule.c 2007-03-14 20:47:12.000000000 +0100
-@@ -25,6 +25,7 @@
- #include <pygobject.h>
- #include <pygtk/pygtk.h>
- #include "../src/vte.h"
-+#include "../src/reaper.h"
-
- extern void pyvte_register_classes(PyObject * d);
- extern PyMethodDef pyvte_functions[];
diff --git a/abs/extra/vte3/PKGBUILD b/abs/extra/vte3/PKGBUILD
new file mode 100644
index 0000000..1019be3
--- /dev/null
+++ b/abs/extra/vte3/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 160601 2012-06-02 20:33:51Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgbase=vte3
+pkgname=(vte3 vte-common)
+pkgver=0.32.2
+pkgrel=1
+pkgdesc="Virtual Terminal Emulator widget for use with GTK3"
+arch=('i686' 'x86_64')
+license=('LGPL')
+options=('!libtool' '!emptydirs')
+makedepends=('intltool' 'gobject-introspection' 'gtk3')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/GNOME/sources/vte/${pkgver%.*}/vte-$pkgver.tar.xz)
+sha256sums=('d69ec071f7a380d8b8b981b35a9a0b891f37c4b6b17d08407f66ac98d619486a')
+
+build() {
+ cd "vte-$pkgver"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/vte \
+ --localstatedir=/var --disable-static \
+ --enable-introspection
+ make
+}
+
+package_vte3(){
+ depends=('gtk3' 'vte-common')
+ cd "vte-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ rm "$pkgdir"/usr/lib/vte/gnome-pty-helper
+}
+
+package_vte-common() {
+ pkgdesc="Common files used by vte and vte3"
+ cd "vte-$pkgver"
+
+ make -C gnome-pty-helper DESTDIR="$pkgdir" install
+}
diff --git a/abs/extra/wireless-regdb/PKGBUILD b/abs/extra/wireless-regdb/PKGBUILD
index 60628d6..0a5f163 100644
--- a/abs/extra/wireless-regdb/PKGBUILD
+++ b/abs/extra/wireless-regdb/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: PKGBUILD 141966 2011-11-03 18:52:54Z thomas $
# Maintainer: Thomas BĂ€chler <thomas@archlinux.org>
pkgname=wireless-regdb
diff --git a/abs/extra/wxgtk/PKGBUILD b/abs/extra/wxgtk/PKGBUILD
index 7eb97bb..62dfb90 100644
--- a/abs/extra/wxgtk/PKGBUILD
+++ b/abs/extra/wxgtk/PKGBUILD
@@ -1,26 +1,26 @@
-# $Id: PKGBUILD 99629 2010-11-15 21:53:38Z eric $
-# Maintainer: Eric Belanger <eric@archlinux.org>
+# $Id: PKGBUILD 148966 2012-02-05 11:58:12Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
pkgname=wxgtk
-pkgver=2.8.11
-pkgrel=2
+pkgver=2.8.12.1
+pkgrel=3
pkgdesc="GTK+ implementation of wxWidgets API for GUI"
arch=('i686' 'x86_64')
url="http://wxwidgets.org"
license=('custom:wxWindows')
-depends=('gtk2' 'gstreamer0.10-base' 'libgl' 'libxxf86vm')
+depends=('gtk2' 'gstreamer0.10-base' 'libgl' 'libxxf86vm' 'libsm')
makedepends=('gstreamer0.10-base-plugins' 'gconf' 'mesa')
-#source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2)
-source=(http://downloads.sourceforge.net/wxwindows/wxGTK-${pkgver}.tar.bz2)
-md5sums=('6040933d200037f90f6aa1c5169e7ec6')
-sha1sums=('e979d9d2b1ee5bd10e90fd00b02f3306327c661a')
+#source=(http://downloads.sourceforge.net/wxwindows/wxGTK-${pkgver}.tar.bz2)
+source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2)
+sha1sums=('05688dc03d61631750f5904273122bb40a2115f5')
build() {
-# cd "${srcdir}/wxPython-src-${pkgver}"
- cd "${srcdir}/wxGTK-${pkgver}"
+ cd "${srcdir}/wxPython-src-${pkgver}"
+# cd "${srcdir}/wxGTK-${pkgver}"
./configure --prefix=/usr --libdir=/usr/lib --with-gtk=2 --with-opengl --enable-unicode \
- --enable-graphics_ctx --disable-optimize --enable-mediactrl \
- --with-libpng=sys --with-libxpm=sys --with-libjpeg=sys --with-libtiff=sys
+ --enable-graphics_ctx --disable-optimize --enable-mediactrl --with-regex=builtin \
+ --with-libpng=sys --with-libxpm=sys --with-libjpeg=sys --with-libtiff=sys \
+ --disable-precomp-headers
make
make -C locale allmo
cd contrib/src
@@ -28,7 +28,8 @@ build() {
}
package() {
- cd "${srcdir}/wxGTK-${pkgver}"
+ cd "${srcdir}/wxPython-src-${pkgver}"
+# cd "${srcdir}/wxGTK-${pkgver}"
make DESTDIR="${pkgdir}" install
cd contrib/src
make DESTDIR="${pkgdir}" install
diff --git a/abs/extra/wxgtk/__changelog b/abs/extra/wxgtk/__changelog
deleted file mode 100644
index 3bf8bed..0000000
--- a/abs/extra/wxgtk/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-remove libgnomeprint
diff --git a/abs/extra/xdg-utils/PKGBUILD b/abs/extra/xdg-utils/PKGBUILD
index c707346..94e715e 100644
--- a/abs/extra/xdg-utils/PKGBUILD
+++ b/abs/extra/xdg-utils/PKGBUILD
@@ -1,19 +1,36 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# $Id: PKGBUILD 160047 2012-05-28 14:14:28Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xdg-utils
-pkgver=1.0.2
-pkgrel=1
-pkgdesc="Command line tools that assist applications with a variety of desktop integration tasks."
-arch=(i686 x86_64)
+pkgver=1.1.0
+_gitdate=20120520
+pkgrel=2.${_gitdate}
+pkgdesc="Command line tools that assist applications with a variety of desktop integration tasks"
+arch=('any')
url="http://portland.freedesktop.org/"
-license=(MIT)
-source=(http://portland.freedesktop.org/download/$pkgname-$pkgver.tgz)
-md5sums=('348a5b91dc66426505022c74a64b2940')
+license=('MIT')
+depends=('sh' 'xorg-xset') # xset needed inside xdg-screensaver
+makedepends=('docbook-xsl' 'lynx' 'xmlto')
+optdepends=('kdebase-runtime: for KDE support in xdg-open'
+ 'libgnome: for GNOME support in xdg-open'
+ 'exo: for Xfce support in xdg-open'
+ 'xorg-xprop: for Xfce support in xdg-open'
+ 'pcmanfm: for LXDE support in xdg-open'
+ 'perl-file-mimeinfo: for generic support in xdg-open')
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.${_gitdate}.tar.gz # last git commit 2012-03-10 13:55:24 (GMT) allow DESKTOP_SESSION='Xfce Session' to match xfce
+)
+md5sums=('4e37d65322dbc4763e85b8ba461f919b')
build() {
- cd $startdir/src/$pkgname-$pkgver
- ./configure --prefix=/usr
- make || return 1
- make DESTDIR=$startdir/pkg install
+ cd ${srcdir}/${pkgname}-5be359a49d4d8dc3c5f814ab89b8422ad522d837
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make scripts-clean -C scripts # needed if it's a git snapshot
+ make man scripts -C scripts # needed if it's a git snapshot
+# make # for release builds
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-5be359a49d4d8dc3c5f814ab89b8422ad522d837
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
diff --git a/abs/extra/xdg-utils/xfce-detection.diff b/abs/extra/xdg-utils/xfce-detection.diff
new file mode 100644
index 0000000..43ccd62
--- /dev/null
+++ b/abs/extra/xdg-utils/xfce-detection.diff
@@ -0,0 +1,49 @@
+--- scripts/xdg-open 2011-01-01 05:03:14.000000000 -0500
++++ scripts/xdg-open.new 2011-06-19 00:43:13.000000000 -0400
+@@ -303,12 +303,35 @@
+
+ detectDE()
+ {
++ # see https://bugs.freedesktop.org/show_bug.cgi?id=34164
++ unset GREP_OPTIONS
++
+ if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
+ elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
+ elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
+ elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
+- elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde;
+- else DE=""
++ elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce
++ fi
++
++ if [ x"$DE" = x"" ]; then
++ # fallback to checking $DESKTOP_SESSION
++ case "$DESKTOP_SESSION" in
++ gnome)
++ DE=gnome;
++ ;;
++ LXDE)
++ DE=lxde;
++ ;;
++ xfce|xfce4)
++ DE=xfce;
++ ;;
++ esac
++ fi
++
++ if [ x"$DE" = x"gnome" ]; then
++ # gnome-default-applications-properties is only available in GNOME 2.x
++ # but not in GNOME 3.x
++ which gnome-default-applications-properties > /dev/null 2>&1 || DE="gnome3"
+ fi
+ }
+
+@@ -535,7 +558,7 @@
+ open_kde "$url"
+ ;;
+
+- gnome)
++ gnome*)
+ open_gnome "$url"
+ ;;
+
diff --git a/abs/extra/xinetd/PKGBUILD b/abs/extra/xinetd/PKGBUILD
index af0e362..3ed7dee 100644
--- a/abs/extra/xinetd/PKGBUILD
+++ b/abs/extra/xinetd/PKGBUILD
@@ -1,32 +1,47 @@
-# $Id: PKGBUILD 31124 2009-03-24 12:46:33Z allan $
-# Maintainer: Judd <jvinet@zeroflux.org>
+# $Id: PKGBUILD 162234 2012-06-24 05:44:41Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Judd <jvinet@zeroflux.org>
+
pkgname=xinetd
-pkgver=2.3.14
-pkgrel=5
-pkgdesc="xinetd is a secure replacement for inetd"
+pkgver=2.3.15
+pkgrel=2
+pkgdesc="A secure replacement for inetd"
arch=('i686' 'x86_64')
url="http://www.xinetd.org/"
license=('custom')
-depends=('tcp_wrappers')
optdepends=('perl: for xconv.pl script')
backup=('etc/xinetd.conf' 'etc/xinetd.d/servers' 'etc/xinetd.d/services')
-source=(http://www.xinetd.org/xinetd-$pkgver.tar.gz xinetd.conf xinetd \
- servers services)
-md5sums=('567382d7972613090215c6c54f9b82d9' 'f109f699a07bc8cfb5791060f5e87f9e'\
- 'ea37a2794f202e6b953d9b6956dad16a' '21f47b4aa20921cfaddddd9f9a407f81'\
- '9fa2061dc7dd738c8424251deb86f81e')
+source=(http://www.xinetd.org/xinetd-$pkgver.tar.gz
+ xinetd.conf
+ xinetd
+ servers
+ services
+ xinetd.service)
+md5sums=('77358478fd58efa6366accae99b8b04c'
+ 'f109f699a07bc8cfb5791060f5e87f9e'
+ 'ea37a2794f202e6b953d9b6956dad16a'
+ '21f47b4aa20921cfaddddd9f9a407f81'
+ '9fa2061dc7dd738c8424251deb86f81e'
+ '08466ed714ea8ba42ad81f6fb3aa62e7')
build() {
cd $srcdir/$pkgname-$pkgver
sed -i "s#${prefix}/man#${prefix}/share/man#" configure
- ./configure --prefix=/usr --with-libwrap
- make || return 1
+ ./configure --prefix=/usr --without-libwrap
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
make prefix=$pkgdir/usr install
- install -D -m755 ../xinetd $pkgdir/etc/rc.d/xinetd
- install -D -m644 ../xinetd.conf $pkgdir/etc/xinetd.conf
- install -D -m644 ../servers $pkgdir/etc/xinetd.d/servers
- install -D -m644 ../services $pkgdir/etc/xinetd.d/services
+
+ install -Dm755 $srcdir/xinetd $pkgdir/etc/rc.d/xinetd
+ install -Dm644 $srcdir/xinetd.conf $pkgdir/etc/xinetd.conf
+ install -Dm644 $srcdir/servers $pkgdir/etc/xinetd.d/servers
+ install -Dm644 $srcdir/services $pkgdir/etc/xinetd.d/services
+ # install systemd files
+ install -Dm644 $srcdir/xinetd.service $pkgdir/usr/lib/systemd/system/xinetd.service
# install license
- install -D -m644 COPYRIGHT $pkgdir/usr/share/licenses/$pkgname/COPYRIGHT
+ install -Dm644 COPYRIGHT $pkgdir/usr/share/licenses/$pkgname/COPYRIGHT
}
diff --git a/abs/extra/xinetd/xinetd-2.3.14.tar.gz b/abs/extra/xinetd/xinetd-2.3.14.tar.gz
deleted file mode 100644
index d2050e3..0000000
--- a/abs/extra/xinetd/xinetd-2.3.14.tar.gz
+++ /dev/null
Binary files differ
diff --git a/abs/extra/xinetd/xinetd.service b/abs/extra/xinetd/xinetd.service
new file mode 100644
index 0000000..c6f6271
--- /dev/null
+++ b/abs/extra/xinetd/xinetd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=A secure replacement for inetd
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/xinetd -dontfork
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/extra/xmlto/PKGBUILD b/abs/extra/xmlto/PKGBUILD
index e6ed12d..6386c18 100644
--- a/abs/extra/xmlto/PKGBUILD
+++ b/abs/extra/xmlto/PKGBUILD
@@ -1,30 +1,31 @@
-# $Id$
+# $Id: PKGBUILD 149980 2012-02-11 23:31:41Z allan $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Sergej Pupykin <sergej@aur.archlinux.org>
# Contributor: Robert Stoffers <rob1@ubuntu.com>
pkgname=xmlto
-pkgver=0.0.23
-pkgrel=1
+pkgver=0.0.25
+pkgrel=2
pkgdesc="Convert xml to many other formats"
arch=('i686' 'x86_64')
url="http://cyberelk.net/tim/software/xmlto/"
license=('GPL')
-depends=('libxslt>=1.1.24' 'perl-yaml-syck' 'perl-test-pod')
+depends=('libxslt' 'perl-yaml-syck' 'perl-test-pod')
makedepends=('docbook-xsl')
-source=(https://fedorahosted.org/releases/x/m/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('3001d6bb2bbc2c8f6c2301f05120f074')
+source=("https://fedorahosted.org/releases/x/m/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('6b6267b1470f8571fe5f63a128970364')
build() {
cd "$srcdir/${pkgname}-${pkgver}"
./configure --prefix=/usr \
- --mandir=/usr/share/man || return 1
- make || return 1
+ --mandir=/usr/share/man
+ make
}
package() {
cd "$srcdir/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
+
+ make DESTDIR="${pkgdir}" install
}
diff --git a/abs/extra/xmms/PKGBUILD b/abs/extra/xmms/PKGBUILD
index 533c227..1a4e74b 100644
--- a/abs/extra/xmms/PKGBUILD
+++ b/abs/extra/xmms/PKGBUILD
@@ -1,50 +1,76 @@
-# $Id: PKGBUILD,v 1.3 2007/12/06 01:18:06 Snowman Exp $
-# Maintainer: Eric Belanger <belanger@astro.umontreal.ca>
+# $Id: PKGBUILD 146759 2012-01-17 03:41:24Z eric $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
pkgname=xmms
pkgver=1.2.11
-pkgrel=1
-pkgdesc="The X MultiMedia System"
+pkgrel=4
+pkgdesc="The X MultiMedia System - a multimedia player"
arch=('i686' 'x86_64')
-url="http://www.xmms.org"
+url="http://legacy.xmms2.org/"
license=('GPL')
-depends=('libsm' 'libxxf86vm' 'zlib' 'gtk' 'libvorbis' 'esd' 'alsa-lib' 'libgl')
-makedepends=('mesa')
+depends=('gtk' 'libxxf86vm' 'libsm' 'desktop-file-utils')
+makedepends=('mesa' 'libmikmod' 'libvorbis' 'alsa-lib' 'libgl')
+optdepends=('libmikmod: for the MikMod input plugin' \
+ 'libvorbis: for the Ogg Vorbis input plugin' \
+ 'alsa-lib: for the alsa output plugin' \
+ 'libgl: for the OpenGL Spectrum analyser visualization plugin')
options=('!libtool')
-source=(http://www.xmms.org/files/1.2.x/$pkgname-$pkgver.tar.bz2 \
- xmms-menu.patch \
- xmms-1.2.10-crossfade-0.3.9.patch \
- xmms-fix.diff)
-md5sums=('f3e6dbaf0b3f571a532ab575656be506' 'b7b6f1811bad8d14e4c4534240e45980'\
- '4eb222111a82a2e1ebe63b5f6109133d' 'd7f9dc3712c486658149c4504f7478a7')
+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.10-fonts.patch xmms.16.png xmms.32.png xmms.48.png)
sha1sums=('9d1eae4baab25fd35c9ddfb49321ca60222f672d'
'27fb6e21bd6db923a425a8df8bd07a2a93867ddb'
'ff5c172752c8bee708d9a9ecd53864cc95a4bcc5'
- 'c227284955f2cc16f027dade670155c0f0fbc4ff')
+ 'c227284955f2cc16f027dade670155c0f0fbc4ff'
+ '4ef47c34b27b6c868d4301b7a078b257c8604471'
+ '0c060385561ea2a4b1c7ad3bd35d3646ae9554f5'
+ '6f6db13c780ba4cbddb8613f0abd2db2823f3021'
+ '2a3b1bf17054b6bd8b1e5937de5c0ad49af8dc92'
+ '31abd37c9c57bd13b2088eb11a1e54e5aa312bf3'
+ '0089d11aa3bce67f3496592d68ee65837406e220'
+ 'f24071ae484d9b55e61dba076801fa8e7976ff2f'
+ '485c67cb8c8d4678bb3b0b280d2e233b14153b22')
build() {
- cd $startdir/src/$pkgname-$pkgver
+ cd "${srcdir}/${pkgname}-${pkgver}"
-# Add id3v2 editing feature (doesn't apply atm, needs to be redone)
-# patch -Np1 -i ../id3v2.patch || return 1
# Fix xmms.desktop
- patch -Np0 -i ../xmms-menu.patch || return 1
+ patch -p0 < ../xmms-menu.patch
# Patch for hang with xmms-crossfade
- patch -Np1 -i ../xmms-1.2.10-crossfade-0.3.9.patch || return 1
+ patch -p1 < ../xmms-1.2.10-crossfade-0.3.9.patch
# fix xmms not able to be shown double size,at least needed for x86_64
- patch -Np1 -i ../xmms-fix.diff || return 1
+ patch -p1 < ../xmms-fix.diff
+# Several patches from Mandriva
+ patch -p1 < ../xmms-1.2.11-fix-http-title-mpg123.patch
+ patch -p0 < ../xmms-1.2.10-recode-id3.patch
+ patch -p1 < ../xmms-1.2.11-3dse.patch
+ patch -p1 < ../xmms-1.2.10-fonts.patch
+ patch -p1 < ../xmms-1.2.11-CVE-2007-0653.0654.patch
- if [ "$CARCH" == "x86_64" ]; then
- ./configure --prefix=/usr --disable-mikmod --disable-simd # for x86_64
- else
- ./configure --prefix=/usr --disable-mikmod --enable-simd # for i686
+ if [ "$CARCH" == "i686" ]; then
+ SIMDOPT="--enable-simd"
+ else
+ SIMDOPT="--disable-simd"
fi
- make || return 1
- make DESTDIR=$startdir/pkg install
- mkdir -p ${startdir}/pkg/usr/share/{applications,pixmaps}
- install -m 644 xmms/xmms.desktop ${startdir}/pkg/usr/share/applications
- install -m 644 xmms/xmms_mini.xpm ${startdir}/pkg/usr/share/pixmaps/xmms.xpm
+ ./configure --prefix=/usr --mandir=/usr/share/man $SIMDOPT
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 xmms/xmms.desktop "${pkgdir}/usr/share/applications/xmms.desktop"
+ install -D -m644 xmms/xmms_mini.xpm "${pkgdir}/usr/share/pixmaps/xmms_mini.xpm"
+ install -D -m644 ../xmms.16.png "${pkgdir}/usr/share/pixmaps/xmms16.png"
+ install -D -m644 ../xmms.32.png "${pkgdir}/usr/share/pixmaps/xmms32.png"
+ install -D -m644 ../xmms.48.png "${pkgdir}/usr/share/pixmaps/xmms48.png"
+ ln -s /usr/share/pixmaps/xmms48.png "${pkgdir}/usr/share/pixmaps/xmms.png"
+
# don't want wmxmms
- rm -rf $startdir/pkg/usr/bin/wmxmms $startdir/pkg/usr/share/xmms
- rm -f $startdir/pkg/usr/man/man1/{gnomexmms.1,wmxmms.1}
+ rm -rf "${pkgdir}/usr/bin/wmxmms" "${pkgdir}/usr/share/xmms"
+ rm -f "${pkgdir}"/usr/share/man/man1/{gnomexmms.1,wmxmms.1}
}
diff --git a/abs/extra/xmms/id3v2.patch b/abs/extra/xmms/id3v2.patch
deleted file mode 100644
index c8f8ba2..0000000
--- a/abs/extra/xmms/id3v2.patch
+++ /dev/null
@@ -1,3379 +0,0 @@
-diff -Naur xmms-1.2.9-orig/Input/mpg123/charset.h xmms-1.2.9/Input/mpg123/charset.h
---- xmms-1.2.9-orig/Input/mpg123/charset.h Wed Dec 31 19:00:00 1969
-+++ xmms-1.2.9/Input/mpg123/charset.h Thu Jan 29 05:20:31 2004
-@@ -0,0 +1,420 @@
-+/* charset.h - 2001/12/04 */
-+/*
-+ * EasyTAG - Tag editor for MP3 and OGG files
-+ * Copyright (C) 2000-2002 Jerome Couderc <j.couderc@ifrance.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+
-+/*
-+ * Standard gettext macros.
-+ */
-+#ifdef ENABLE_NLS
-+# include <libintl.h>
-+# define _(String) gettext (String)
-+# ifdef gettext_noop
-+# define N_(String) gettext_noop (String)
-+# else
-+# define N_(String) (String)
-+# endif
-+#else
-+# define textdomain(String) (String)
-+# define gettext(String) (String)
-+# define dgettext(Domain,Message) (Message)
-+# define dcgettext(Domain,Message,Type) (Message)
-+# define bindtextdomain(Domain,Directory) (Domain)
-+# define _(String) (String)
-+# define N_(String) (String)
-+#endif
-+
-+#ifndef DLL_H
-+#define DLL_H
-+typedef struct DLL_s
-+{
-+ void *prev;
-+ void *data;
-+ void *next;
-+} DLL;
-+#endif
-+
-+#ifndef __CHARSET_H__
-+#define __CHARSET_H__
-+
-+
-+/***************
-+ * Declaration *
-+ ***************/
-+
-+typedef struct {
-+ char *charset_title;
-+ char *charset_name;
-+} CharsetInfo;
-+
-+
-+/**************
-+ * Prototypes *
-+ **************/
-+
-+//static gchar* get_current_charset (void);
-+
-+/* Used for ogg tags */
-+char* convert_to_utf8 (const char *string);
-+char* convert_from_utf8 (const char *string);
-+
-+char* convert_from_file_to_user (const char *string);
-+char* convert_from_user_to_file (const char *string);
-+
-+DLL *Charset_Create_List (void);
-+char *Charset_Get_Name_From_Title (char *charset_title);
-+char *Charset_Get_Title_From_Name (char *charset_name);
-+
-+short int test_conversion_charset (char *from, char *to);
-+
-+
-+#endif /* __CHARSET_H__ */
-+
-+/*
-+ * Main part of code, written by:
-+ *
-+ * Copyright (C) 1999-2001 Hćvard Kvćlen <havardk@xmms.org>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-+ * 02111-1307, USA.
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <string.h>
-+#include <errno.h>
-+
-+#ifdef HAVE_ICONV_OPEN
-+#include <iconv.h>
-+#endif
-+
-+#ifdef HAVE_LANGINFO_CODESET
-+#include <langinfo.h>
-+#endif
-+
-+/****************
-+ * Declarations *
-+ ****************/
-+
-+#define CHARSET_TRANS_ARRAY_LEN ( sizeof(charset_trans_array) / sizeof((charset_trans_array)[0]) )
-+const CharsetInfo charset_trans_array[] = {
-+ {N_("Arabic (IBM-864)"), "IBM864" },
-+ {N_("Arabic (ISO-8859-6)"), "ISO-8859-6" },
-+ {N_("Arabic (Windows-1256)"), "windows-1256" },
-+ {N_("Baltic (ISO-8859-13)"), "ISO-8859-13" },
-+ {N_("Baltic (ISO-8859-4)"), "ISO-8859-4" },
-+ {N_("Baltic (Windows-1257)"), "windows-1257" },
-+ {N_("Celtic (ISO-8859-14)"), "ISO-8859-14" },
-+ {N_("Central European (IBM-852)"), "IBM852" },
-+ {N_("Central European (ISO-8859-2)"), "ISO-8859-2" },
-+ {N_("Central European (Windows-1250)"), "windows-1250" },
-+ {N_("Chinese Simplified (GB18030)"), "gb18030" },
-+ {N_("Chinese Simplified (GB2312)"), "GB2312" },
-+ {N_("Chinese Traditional (Big5)"), "Big5" },
-+ {N_("Chinese Traditional (Big5-HKSCS)"), "Big5-HKSCS" },
-+ {N_("Cyrillic (IBM-855)"), "IBM855" },
-+ {N_("Cyrillic (ISO-8859-5)"), "ISO-8859-5" },
-+ {N_("Cyrillic (ISO-IR-111)"), "ISO-IR-111" },
-+ {N_("Cyrillic (KOI8-R)"), "KOI8-R" },
-+ {N_("Cyrillic (Windows-1251)"), "windows-1251" },
-+ {N_("Cyrillic/Russian (CP-866)"), "IBM866" },
-+ {N_("Cyrillic/Ukrainian (KOI8-U)"), "KOI8-U" },
-+ {N_("English (US-ASCII)"), "us-ascii" },
-+ {N_("Greek (ISO-8859-7)"), "ISO-8859-7" },
-+ {N_("Greek (Windows-1253)"), "windows-1253" },
-+ {N_("Hebrew (IBM-862)"), "IBM862" },
-+ {N_("Hebrew (Windows-1255)"), "windows-1255" },
-+ {N_("Japanese (EUC-JP)"), "EUC-JP" },
-+ {N_("Japanese (ISO-2022-JP)"), "ISO-2022-JP" },
-+ {N_("Japanese (Shift_JIS)"), "Shift_JIS" },
-+ {N_("Korean (EUC-KR)"), "EUC-KR" },
-+ {N_("Nordic (ISO-8859-10)"), "ISO-8859-10" },
-+ {N_("South European (ISO-8859-3)"), "ISO-8859-3" },
-+ {N_("Thai (TIS-620)"), "TIS-620" },
-+ {N_("Turkish (IBM-857)"), "IBM857" },
-+ {N_("Turkish (ISO-8859-9)"), "ISO-8859-9" },
-+ {N_("Turkish (Windows-1254)"), "windows-1254" },
-+ {N_("Unicode (UTF-7)"), "UTF-7" },
-+ {N_("Unicode (UTF-8)"), "UTF-8" },
-+ {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
-+ {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
-+ {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
-+ {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
-+ {N_("Vietnamese (VISCII)"), "VISCII" },
-+ {N_("Vietnamese (Windows-1258)"), "windows-1258" },
-+ {N_("Visual Hebrew (ISO-8859-8)"), "ISO-8859-8" },
-+ {N_("Western (IBM-850)"), "IBM850" },
-+ {N_("Western (ISO-8859-1)"), "ISO-8859-1" },
-+ {N_("Western (ISO-8859-15)"), "ISO-8859-15" },
-+ {N_("Western (Windows-1252)"), "windows-1252" }
-+
-+ /*
-+ * From this point, character sets aren't supported by iconv
-+ */
-+/* {N_("Arabic (IBM-864-I)"), "IBM864i" },
-+ {N_("Arabic (ISO-8859-6-E)"), "ISO-8859-6-E" },
-+ {N_("Arabic (ISO-8859-6-I)"), "ISO-8859-6-I" },
-+ {N_("Arabic (MacArabic)"), "x-mac-arabic" },
-+ {N_("Armenian (ARMSCII-8)"), "armscii-8" },
-+ {N_("Central European (MacCE)"), "x-mac-ce" },
-+ {N_("Chinese Simplified (GBK)"), "x-gbk" },
-+ {N_("Chinese Simplified (HZ)"), "HZ-GB-2312" },
-+ {N_("Chinese Traditional (EUC-TW)"), "x-euc-tw" },
-+ {N_("Croatian (MacCroatian)"), "x-mac-croatian" },
-+ {N_("Cyrillic (MacCyrillic)"), "x-mac-cyrillic" },
-+ {N_("Cyrillic/Ukrainian (MacUkrainian)"), "x-mac-ukrainian" },
-+ {N_("Farsi (MacFarsi)"), "x-mac-farsi"},
-+ {N_("Greek (MacGreek)"), "x-mac-greek" },
-+ {N_("Gujarati (MacGujarati)"), "x-mac-gujarati" },
-+ {N_("Gurmukhi (MacGurmukhi)"), "x-mac-gurmukhi" },
-+ {N_("Hebrew (ISO-8859-8-E)"), "ISO-8859-8-E" },
-+ {N_("Hebrew (ISO-8859-8-I)"), "ISO-8859-8-I" },
-+ {N_("Hebrew (MacHebrew)"), "x-mac-hebrew" },
-+ {N_("Hindi (MacDevanagari)"), "x-mac-devanagari" },
-+ {N_("Icelandic (MacIcelandic)"), "x-mac-icelandic" },
-+ {N_("Korean (JOHAB)"), "x-johab" },
-+ {N_("Korean (UHC)"), "x-windows-949" },
-+ {N_("Romanian (MacRomanian)"), "x-mac-romanian" },
-+ {N_("Turkish (MacTurkish)"), "x-mac-turkish" },
-+ {N_("User Defined"), "x-user-defined" },
-+ {N_("Vietnamese (TCVN)"), "x-viet-tcvn5712" },
-+ {N_("Vietnamese (VPS)"), "x-viet-vps" },
-+ {N_("Western (MacRoman)"), "x-mac-roman" },
-+ // charsets whithout posibly translatable names
-+ {"T61.8bit", "T61.8bit" },
-+ {"x-imap4-modified-utf7", "x-imap4-modified-utf7"},
-+ {"x-u-escaped", "x-u-escaped" },
-+ {"windows-936", "windows-936" }
-+*/
-+};
-+
-+
-+
-+
-+/*************
-+ * Functions *
-+ *************/
-+// Return the last item of an doubly linked list
-+static DLL *
-+dll_last_c (DLL *list)
-+{
-+ DLL *item = list;
-+
-+ while ( item->next )
-+ item = item->next;
-+
-+ return item;
-+}
-+
-+// Append an item to the doubly linked list
-+static DLL *
-+dll_append_c (DLL *list, void *data)
-+{
-+ DLL *item = malloc (sizeof(DLL));
-+
-+ item->data = data;
-+ item->prev = dll_last_c(list);
-+ item->next = NULL;
-+
-+ return item;
-+}
-+
-+static char* get_current_charset (void)
-+{
-+ char *charset = getenv("CHARSET");
-+
-+#ifdef HAVE_LANGINFO_CODESET
-+ if (!charset)
-+ charset = nl_langinfo(CODESET);
-+#endif
-+ if (!charset)
-+ charset = "ISO-8859-1";
-+
-+ return charset;
-+}
-+
-+
-+#ifdef HAVE_ICONV_OPEN
-+static char* convert_string (const char *string, char *from, char *to)
-+{
-+ size_t outleft, outsize, length;
-+ iconv_t cd;
-+ char *out, *outptr;
-+ const char *input = string;
-+
-+ if (!string)
-+ return NULL;
-+
-+ length = strlen(string);
-+
-+ /* g_message("converting %s from %s to %s", string, from, to); */
-+ if ((cd = iconv_open(to, from)) == (iconv_t)-1)
-+ {
-+ fprintf (stderr, "convert_string(): Conversion not supported. Charsets: %s -> %s", from, to);
-+ return strdup(string);
-+ }
-+
-+ /* Due to a GLIBC bug, round outbuf_size up to a multiple of 4 */
-+ /* + 1 for nul in case len == 1 */
-+ outsize = ((length + 3) & ~3) + 1;
-+ out = g_malloc(outsize);
-+ outleft = outsize - 1;
-+ outptr = out;
-+
-+ retry:
-+ if (iconv(cd, (char **)&input, &length, &outptr, &outleft) == -1)
-+ {
-+ int used;
-+ switch (errno)
-+ {
-+ case E2BIG:
-+ used = outptr - out;
-+ outsize = (outsize - 1) * 2 + 1;
-+ out = g_realloc(out, outsize);
-+ outptr = out + used;
-+ outleft = outsize - 1 - used;
-+ goto retry;
-+ case EINVAL:
-+ break;
-+ case EILSEQ:
-+ /* Invalid sequence, try to get the
-+ rest of the string */
-+ input++;
-+ length = strlen(input);
-+ goto retry;
-+ default:
-+ fprintf (stderr, "convert_string(): Conversion failed. Inputstring: %s; Error: %s", string, strerror(errno));
-+ break;
-+ }
-+ }
-+ *outptr = '\0';
-+
-+ iconv_close(cd);
-+ return out;
-+}
-+#else
-+static char* convert_string (const char *string, char *from, char *to)
-+{
-+ if (!string)
-+ return NULL;
-+ return strdup(string);
-+}
-+#endif
-+
-+
-+/*
-+ * Conversion with UTF-8 for ogg tags
-+ */
-+char* convert_to_utf8 (const char *string)
-+{
-+ char *charset = get_current_charset();
-+
-+ return convert_string(string, charset, "UTF-8");
-+}
-+
-+char* convert_from_utf8 (const char *string)
-+{
-+ char *charset = get_current_charset();
-+
-+ return convert_string(string, "UTF-8", charset);
-+}
-+
-+
-+DLL *Charset_Create_List (void)
-+{
-+ DLL *list = NULL;
-+ int i;
-+
-+ for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
-+ list = dll_append_c (list,_(charset_trans_array[i].charset_title));
-+ return list;
-+}
-+
-+
-+/*
-+ * Return charset_name from charset_title
-+ */
-+char *Charset_Get_Name_From_Title (char *charset_title)
-+{
-+ int i;
-+
-+ if (charset_title)
-+ for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
-+ if ( strcasecmp(_(charset_title),_(charset_trans_array[i].charset_title)) == 0 )
-+ return charset_trans_array[i].charset_name;
-+ return "";
-+}
-+
-+
-+/*
-+ * Return charset_title from charset_name
-+ */
-+char *Charset_Get_Title_From_Name (char *charset_name)
-+{
-+ int i;
-+
-+ if (charset_name)
-+ for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
-+ if ( strcasecmp(charset_name,charset_trans_array[i].charset_name) == 0 )
-+ return _(charset_trans_array[i].charset_title);
-+ return "";
-+}
-+
-+
-+
-+/*
-+ * Test if the conversion is supported between two character sets ('from' and 'to)
-+ */
-+#ifdef HAVE_ICONV_OPEN
-+short int test_conversion_charset (char *from, char *to)
-+{
-+ iconv_t cd;
-+
-+ if ((cd=iconv_open(to,from)) == (iconv_t)-1)
-+ {
-+ /* Conversion not supported */
-+ return FALSE;
-+ }
-+ iconv_close(cd);
-+ return TRUE;
-+}
-+#else
-+short int test_conversion_charset (char *from, char *to)
-+{
-+ return TRUE;
-+}
-+#endif
-diff -Naur xmms-1.2.9-orig/Input/mpg123/fileinfo.c xmms-1.2.9/Input/mpg123/fileinfo.c
---- xmms-1.2.9-orig/Input/mpg123/fileinfo.c Thu Jan 29 06:43:24 2004
-+++ xmms-1.2.9/Input/mpg123/fileinfo.c Thu Jan 29 06:39:47 2004
-@@ -25,28 +25,36 @@
- #include <errno.h>
- #include <libxmms/xentry.h>
- #include "mpg123.h"
-+#include "lib_id3v2.h"
-+
-+#define MAX_STR_LEN 100
-+#define MAX_ENTRY_LEN2 1023
-
- static GtkWidget *window = NULL;
--static GtkWidget *filename_entry, *id3_frame;
--static GtkWidget *title_entry, *artist_entry, *album_entry, *year_entry;
--static GtkWidget *tracknum_entry, *comment_entry, *genre_combo;
-+static GtkWidget *notebook = NULL;
-+static GtkWidget *filename_entry, *id3v1_frame, *id3v2_frame;
-+static GtkWidget *v1_checkbox, *v2_checkbox;
-+static GtkWidget *v1_title_entry, *v1_artist_entry, *v1_album_entry, *v1_year_entry, *v1_tracknum_entry, *v1_comment_entry;
-+static GtkWidget *v2_title_entry, *v2_artist_entry, *v2_album_entry, *v2_year_entry, *v2_tracknum_entry, *v2_comment_entry,
-+ *v2_composer_entry, *v2_orig_artist_entry, *v2_url_entry, *v2_encoded_by_entry;
-+static GtkWidget *v1_genre_combo, *v2_genre_combo;
- static GtkWidget *mpeg_level, *mpeg_bitrate, *mpeg_samplerate, *mpeg_flags;
- static GtkWidget *mpeg_fileinfo;
-
-+static GPtrArray *v1_labels_list = NULL, *v2_labels_list = NULL; // TODO: Where will these be freed?
- static GList *genre_list;
- struct genre_item {
- const char *name;
- int id;
- };
--static int current_genre;
-+static int v1_current_genre;
-+static int v2_current_genre;
- static char *current_filename;
-
- extern char *mpg123_filename;
- extern int mpg123_bitrate, mpg123_frequency, mpg123_layer, mpg123_lsf, mpg123_mode;
- extern gboolean mpg123_stereo, mpg123_mpeg25;
-
--#define MAX_STR_LEN 100
--
- static void label_set_text(GtkWidget * label, char *str, ...)
- G_GNUC_PRINTF(2, 3);
-
-@@ -66,6 +74,12 @@
- strncpy(tag, gtk_entry_get_text(entry), length);
- }
-
-+void copy_entry_tag(GtkEntry * src, GtkEntry * dest, int length)
-+{
-+ set_entry_tag(dest, gtk_entry_get_text(src), length);
-+ return;
-+}
-+
- static int genre_find_index(GList *genre_list, int id)
- {
- int idx = 0;
-@@ -80,15 +94,29 @@
- return idx;
- }
-
-+static int genre_find_index_str(GList *genre_list, const char* str)
-+{
-+ int idx = 0;
-+ while (genre_list)
-+ {
-+ struct genre_item *item = genre_list->data;
-+ if (strcmp(item->name, str) == 0)
-+ break;
-+ idx++;
-+ genre_list = genre_list->next;
-+ }
-+ return idx;
-+}
-+
- static int genre_comp_func(gconstpointer a, gconstpointer b)
- {
- const struct genre_item *ga = a, *gb = b;
- return strcasecmp(ga->name, gb->name);
- }
-
--static void save_cb(GtkWidget * w, gpointer data)
-+static void remove_id3v1(void)
- {
-- int fd;
-+ int fd, len;
- struct id3v1tag_t tag;
- char *msg = NULL;
-
-@@ -97,71 +125,36 @@
-
- if ((fd = open(current_filename, O_RDWR)) != -1)
- {
-- int tracknum;
--
-- lseek(fd, -128, SEEK_END);
-+ len = lseek(fd, -128, SEEK_END);
- read(fd, &tag, sizeof (struct id3v1tag_t));
-
- if (!strncmp(tag.tag, "TAG", 3))
-- lseek(fd, -128, SEEK_END);
-- else
-- lseek(fd, 0, SEEK_END);
-- tag.tag[0] = 'T';
-- tag.tag[1] = 'A';
-- tag.tag[2] = 'G';
-- get_entry_tag(GTK_ENTRY(title_entry), tag.title, 30);
-- get_entry_tag(GTK_ENTRY(artist_entry), tag.artist, 30);
-- get_entry_tag(GTK_ENTRY(album_entry), tag.album, 30);
-- get_entry_tag(GTK_ENTRY(year_entry), tag.year, 4);
-- tracknum = atoi(gtk_entry_get_text(GTK_ENTRY(tracknum_entry)));
-- if (tracknum > 0)
- {
-- get_entry_tag(GTK_ENTRY(comment_entry),
-- tag.u.v1_1.comment, 28);
-- tag.u.v1_1.__zero = 0;
-- tag.u.v1_1.track_number = MIN(tracknum, 255);
-+ if (ftruncate(fd, len))
-+ msg = g_strdup_printf(_("%s\n"
-+ "Unable to truncate file: %s"),
-+ _("Couldn't remove tag!"),
-+ strerror(errno));
- }
-- else
-- get_entry_tag(GTK_ENTRY(comment_entry),
-- tag.u.v1_0.comment, 30);
-- tag.genre = current_genre;
-- if (write(fd, &tag, sizeof (tag)) != sizeof (tag))
-- msg = g_strdup_printf(_("%s\nUnable to write to file: %s"),
-- _("Couldn't write tag!"),
-- strerror(errno));
- close(fd);
- }
- else
- msg = g_strdup_printf(_("%s\nUnable to open file: %s"),
-- _("Couldn't write tag!"),
-+ _("Couldn't remove tag!"),
- strerror(errno));
- if (msg)
- {
-- GtkWidget *mwin = xmms_show_message(_("File Info"), msg,
-- _("Ok"), FALSE, NULL, NULL);
-+ GtkWidget *mwin = xmms_show_message(_("File Info"), msg, _("Ok"),
-+ FALSE, NULL, NULL);
- gtk_window_set_transient_for(GTK_WINDOW(mwin),
- GTK_WINDOW(window));
- g_free(msg);
- }
-- else
-- gtk_widget_destroy(window);
--}
--
--static void label_set_text(GtkWidget * label, char *str, ...)
--{
-- va_list args;
-- char tempstr[MAX_STR_LEN];
--
-- va_start(args, str);
-- g_vsnprintf(tempstr, MAX_STR_LEN, str, args);
-- va_end(args);
--
-- gtk_label_set_text(GTK_LABEL(label), tempstr);
- }
-
--static void remove_id3_cb(GtkWidget * w, gpointer data)
-+static void save_cb(GtkWidget * w, gpointer data)
- {
-- int fd, len;
-+ int fd;
- struct id3v1tag_t tag;
- char *msg = NULL;
-
-@@ -170,36 +163,95 @@
-
- if ((fd = open(current_filename, O_RDWR)) != -1)
- {
-- len = lseek(fd, -128, SEEK_END);
-- read(fd, &tag, sizeof (struct id3v1tag_t));
-+ if (!GTK_TOGGLE_BUTTON(v1_checkbox)->active) {
-+ // Try to save id3v1 tag
-+ int tracknum;
-
-- if (!strncmp(tag.tag, "TAG", 3))
-- {
-- if (ftruncate(fd, len))
-- msg = g_strdup_printf(
-- _("%s\n"
-- "Unable to truncate file: %s"),
-- _("Couldn't remove tag!"),
-- strerror(errno));
-+ lseek(fd, -128, SEEK_END);
-+ read(fd, &tag, sizeof (struct id3v1tag_t));
-+
-+ if (!strncmp(tag.tag, "TAG", 3))
-+ lseek(fd, -128, SEEK_END);
-+ else
-+ lseek(fd, 0, SEEK_END);
-+ tag.tag[0] = 'T';
-+ tag.tag[1] = 'A';
-+ tag.tag[2] = 'G';
-+ get_entry_tag(GTK_ENTRY(v1_title_entry), tag.title, 30);
-+ get_entry_tag(GTK_ENTRY(v1_artist_entry), tag.artist, 30);
-+ get_entry_tag(GTK_ENTRY(v1_album_entry), tag.album, 30);
-+ get_entry_tag(GTK_ENTRY(v1_year_entry), tag.year, 4);
-+ tracknum = atoi(gtk_entry_get_text(GTK_ENTRY(v1_tracknum_entry)));
-+ if (tracknum > 0)
-+ {
-+ get_entry_tag(GTK_ENTRY(v1_comment_entry),
-+ tag.u.v1_1.comment, 28);
-+ tag.u.v1_1.__zero = 0;
-+ tag.u.v1_1.track_number = MIN(tracknum, 255);
-+ }
-+ else
-+ get_entry_tag(GTK_ENTRY(v1_comment_entry),
-+ tag.u.v1_0.comment, 30);
-+ tag.genre = v1_current_genre;
-+ if (write(fd, &tag, sizeof (tag)) != sizeof (tag))
-+ msg = g_strdup_printf(_("%s\nUnable to write to file: %s"),
-+ _("Couldn't write tag!"),
-+ strerror(errno));
-+ } else {
-+ // Remove the id3v1 tag from the file
-+ remove_id3v1();
- }
-- else
-- msg = strdup(_("No tag to remove!"));
-- close(fd);
-+
-+ if (!GTK_TOGGLE_BUTTON(v2_checkbox)->active) {
-+
-+ id3Tag v2_tag;
-+ strncpy(v2_tag.title, gtk_entry_get_text(GTK_ENTRY(v2_title_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.artist, gtk_entry_get_text(GTK_ENTRY(v2_artist_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.album, gtk_entry_get_text(GTK_ENTRY(v2_album_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.year, gtk_entry_get_text(GTK_ENTRY(v2_year_entry)), 4);
-+ strncpy(v2_tag.comment, gtk_entry_get_text(GTK_ENTRY(v2_comment_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.track, gtk_entry_get_text(GTK_ENTRY(v2_tracknum_entry)), 3);
-+ snprintf(v2_tag.genre, 6, "(%d)", v2_current_genre);
-+
-+ strncpy(v2_tag.composer, gtk_entry_get_text(GTK_ENTRY(v2_composer_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.url, gtk_entry_get_text(GTK_ENTRY(v2_url_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.orig_artist, gtk_entry_get_text(GTK_ENTRY(v2_orig_artist_entry)), MAX_ENTRY_LEN2);
-+ strncpy(v2_tag.enc_by, gtk_entry_get_text(GTK_ENTRY(v2_encoded_by_entry)), MAX_ENTRY_LEN2);
-+
-+ set_id3v2_tag(&v2_tag, current_filename);
-+
-+ } else {
-+ // remove the id3v2 tag from the file
-+ del_id3v2_tag(current_filename);
-+ }
-+
-+ if (fd)
-+ close(fd);
- }
- else
- msg = g_strdup_printf(_("%s\nUnable to open file: %s"),
-- _("Couldn't remove tag!"),
-+ _("Couldn't write tag!"),
- strerror(errno));
- if (msg)
- {
-- GtkWidget *mwin = xmms_show_message(_("File Info"), msg,
-- _("Ok"), FALSE, NULL, NULL);
-+ GtkWidget *mwin = xmms_show_message(_("File Info"), msg, _("Ok"),
-+ FALSE, NULL, NULL);
- gtk_window_set_transient_for(GTK_WINDOW(mwin),
- GTK_WINDOW(window));
- g_free(msg);
- }
-- else
-- gtk_widget_destroy(window);
-+}
-+
-+static void label_set_text(GtkWidget * label, char *str, ...)
-+{
-+ va_list args;
-+ char tempstr[MAX_STR_LEN];
-+
-+ va_start(args, str);
-+ g_vsnprintf(tempstr, MAX_STR_LEN, str, args);
-+ va_end(args);
-+
-+ gtk_label_set_text(GTK_LABEL(label), tempstr);
- }
-
- static void set_mpeg_level_label(gboolean mpeg25, int lsf, int layer)
-@@ -222,28 +274,144 @@
-
- static void file_info_http(char *filename)
- {
-- gtk_widget_set_sensitive(id3_frame, FALSE);
-+ gtk_widget_set_sensitive(id3v1_frame, FALSE);
-+ gtk_widget_set_sensitive(id3v2_frame, FALSE);
- if (mpg123_filename && !strcmp(filename, mpg123_filename) &&
- mpg123_bitrate != 0)
- {
-- set_mpeg_level_label(mpg123_mpeg25, mpg123_lsf, mpg123_layer);
-+ set_mpeg_level_label(mpg123_mpeg25, mpg123_lsf,
-+ mpg123_layer);
- label_set_text(mpeg_bitrate, _("Bitrate: %d kb/s"),
-- mpg123_bitrate);
-+ mpg123_bitrate);
- label_set_text(mpeg_samplerate, _("Samplerate: %d Hz"),
-- mpg123_frequency);
-+ mpg123_frequency);
- label_set_text(mpeg_flags, "%s",
-- channel_mode_name(mpg123_mode));
-+ channel_mode_name(mpg123_mode));
- }
- }
-
--static void genre_selected(GtkList *list, GtkWidget *w, gpointer data)
-+void copy_v2_to_v1_cb(GtkButton *button, gpointer user_data)
-+{
-+ copy_entry_tag(GTK_ENTRY(v2_title_entry), GTK_ENTRY(v1_title_entry), 30);
-+ copy_entry_tag(GTK_ENTRY(v2_artist_entry), GTK_ENTRY(v1_artist_entry), 30);
-+ copy_entry_tag(GTK_ENTRY(v2_album_entry), GTK_ENTRY(v1_album_entry), 30);
-+ copy_entry_tag(GTK_ENTRY(v2_year_entry), GTK_ENTRY(v1_year_entry), 4);
-+ copy_entry_tag(GTK_ENTRY(v2_comment_entry), GTK_ENTRY(v1_comment_entry), 30);
-+ copy_entry_tag(GTK_ENTRY(v2_tracknum_entry), GTK_ENTRY(v1_tracknum_entry), 3);
-+
-+ gtk_list_select_item(GTK_LIST(GTK_COMBO(v1_genre_combo)->list), genre_find_index(genre_list, v2_current_genre));
-+ return;
-+}
-+
-+void copy_v1_to_v2_cb(GtkButton *button, gpointer user_data)
-+{
-+ copy_entry_tag(GTK_ENTRY(v1_title_entry), GTK_ENTRY(v2_title_entry), MAX_ENTRY_LEN2);
-+ copy_entry_tag(GTK_ENTRY(v1_artist_entry), GTK_ENTRY(v2_artist_entry), MAX_ENTRY_LEN2);
-+ copy_entry_tag(GTK_ENTRY(v1_album_entry), GTK_ENTRY(v2_album_entry), MAX_ENTRY_LEN2);
-+ copy_entry_tag(GTK_ENTRY(v1_year_entry), GTK_ENTRY(v2_year_entry), 4);
-+ copy_entry_tag(GTK_ENTRY(v1_comment_entry), GTK_ENTRY(v2_comment_entry), MAX_ENTRY_LEN2);
-+ copy_entry_tag(GTK_ENTRY(v1_tracknum_entry), GTK_ENTRY(v2_tracknum_entry), 3);
-+
-+ gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list), genre_find_index(genre_list, v1_current_genre));
-+ //int genreID = find_genre_id(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(v1_genre_combo)->entry)));
-+ //gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list),
-+ // g_list_index(genre_list, (char *) mpg123_id3_genres[genreID]));
-+ return;
-+}
-+
-+void v1_toggle_cb (GtkWidget *widget, gpointer data)
-+{
-+ int i = 0;
-+ if (GTK_TOGGLE_BUTTON (widget)->active)
-+ {
-+ // If control reaches here, the toggle button is down
-+ // Gray out labels
-+ for (i = 0; i < v1_labels_list->len; i++) {
-+ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v1_labels_list, i) ), FALSE);
-+ }
-+ gtk_widget_set_sensitive(v1_title_entry, FALSE);
-+ gtk_widget_set_sensitive(v1_artist_entry, FALSE);
-+ gtk_widget_set_sensitive(v1_album_entry, FALSE);
-+ gtk_widget_set_sensitive(v1_year_entry, FALSE);
-+ gtk_widget_set_sensitive(v1_tracknum_entry, FALSE);
-+ gtk_widget_set_sensitive(v1_comment_entry, FALSE);
-+ gtk_widget_set_sensitive(v1_genre_combo, FALSE);
-+ } else {
-+
-+ // If control reaches here, the toggle button is up
-+ // Enable labels
-+ for (i = 0; i < v1_labels_list->len; i++) {
-+ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v1_labels_list, i) ), TRUE);
-+ }
-+ gtk_widget_set_sensitive(v1_title_entry, TRUE);
-+ gtk_widget_set_sensitive(v1_artist_entry, TRUE);
-+ gtk_widget_set_sensitive(v1_album_entry, TRUE);
-+ gtk_widget_set_sensitive(v1_year_entry, TRUE);
-+ gtk_widget_set_sensitive(v1_tracknum_entry, TRUE);
-+ gtk_widget_set_sensitive(v1_comment_entry, TRUE);
-+ gtk_widget_set_sensitive(v1_genre_combo, TRUE);
-+ }
-+}
-+
-+void v2_toggle_cb (GtkWidget *widget, gpointer data)
-+{
-+ int i = 0;
-+ if (GTK_TOGGLE_BUTTON (widget)->active)
-+ {
-+ // If control reaches here, the toggle button is down
-+ // Gray out labels
-+ for (i = 0; i < v2_labels_list->len; i++) {
-+ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v2_labels_list, i) ), FALSE);
-+ }
-+ gtk_widget_set_sensitive(v2_title_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_artist_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_album_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_year_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_tracknum_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_comment_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_composer_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_orig_artist_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_url_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_encoded_by_entry, FALSE);
-+ gtk_widget_set_sensitive(v2_genre_combo, FALSE);
-+ } else {
-+
-+ // If control reaches here, the toggle button is up
-+ // Enable labels
-+ for (i = 0; i < v2_labels_list->len; i++) {
-+ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v2_labels_list, i) ), TRUE);
-+ }
-+ gtk_widget_set_sensitive(v2_title_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_artist_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_album_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_year_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_tracknum_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_comment_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_composer_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_orig_artist_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_url_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_encoded_by_entry, TRUE);
-+ gtk_widget_set_sensitive(v2_genre_combo, TRUE);
-+ }
-+}
-+static void v1_genre_selected(GtkList *list, GtkWidget *w, gpointer data)
-+{
-+ void * p;
-+ p = gtk_object_get_data(GTK_OBJECT(w), "genre_id");
-+ if (p != NULL)
-+ v1_current_genre = GPOINTER_TO_INT(p);
-+ else
-+ v1_current_genre = 0;
-+}
-+
-+static void v2_genre_selected(GtkList *list, GtkWidget *w, gpointer data)
- {
- void * p;
- p = gtk_object_get_data(GTK_OBJECT(w), "genre_id");
- if (p != NULL)
-- current_genre = GPOINTER_TO_INT(p);
-+ v2_current_genre = GPOINTER_TO_INT(p);
- else
-- current_genre = 0;
-+ v2_current_genre = 0;
- }
-
- static void genre_set_popdown(GtkWidget *combo, GList *genres)
-@@ -266,11 +434,12 @@
- void mpg123_file_info_box(char *filename)
- {
- int i;
-- struct id3v1tag_t tag;
-+ struct id3v1tag_t id3v1tag;
- FILE *fh;
- char *tmp, *title;
- const char *emphasis[4];
- const char *bool_label[2];
-+ struct id3tag_t id3v2tag;
-
- emphasis[0] = _("None");
- emphasis[1] = _("50/15 ms");
-@@ -281,116 +450,123 @@
-
- if (!window)
- {
-- GtkWidget *vbox, *hbox, *left_vbox, *table;
-- GtkWidget *mpeg_frame, *mpeg_box;
-- GtkWidget *label, *filename_hbox;
-- GtkWidget *bbox, *save, *remove_id3, *cancel;
--
-- window = gtk_window_new(GTK_WINDOW_DIALOG);
-- gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
-- gtk_signal_connect(GTK_OBJECT(window), "destroy",
-- gtk_widget_destroyed, &window);
-- gtk_container_set_border_width(GTK_CONTAINER(window), 10);
--
-- vbox = gtk_vbox_new(FALSE, 10);
-- gtk_container_add(GTK_CONTAINER(window), vbox);
-+ GtkWidget *window_vbox,
-+ *id3v1_vbox, *id3v2_vbox, *id3v1_frame_vbox, *id3v2_frame_vbox,
-+ *mpeg_lvbox, *mpeg_rvbox, *mpeg_hbox, *mpeg_box, *mpeg_frame,
-+ *bbox, *save, *close, *copy_to, *copy_from,
-+ *table, *label, *filename_hbox;
-+
-+ v1_labels_list = g_ptr_array_new();
-+ v2_labels_list = g_ptr_array_new();
-+
-+ window = gtk_window_new(GTK_WINDOW_DIALOG);
-+ //gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
-+ gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window);
-+ gtk_container_set_border_width(GTK_CONTAINER(window), 10);
-
-+ window_vbox = gtk_vbox_new(FALSE,10);
- filename_hbox = gtk_hbox_new(FALSE, 5);
-- gtk_box_pack_start(GTK_BOX(vbox), filename_hbox,
-- FALSE, TRUE, 0);
-+ gtk_box_pack_start(GTK_BOX(window_vbox), filename_hbox, FALSE, TRUE, 0);
-
- label = gtk_label_new(_("Filename:"));
-- gtk_box_pack_start(GTK_BOX(filename_hbox), label,
-- FALSE, TRUE, 0);
-+ gtk_box_pack_start(GTK_BOX(filename_hbox), label, FALSE, TRUE, 0);
- filename_entry = xmms_entry_new();
- gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE);
-- gtk_box_pack_start(GTK_BOX(filename_hbox),
-- filename_entry, TRUE, TRUE, 0);
--
-- hbox = gtk_hbox_new(FALSE, 10);
-- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
--
-- left_vbox = gtk_vbox_new(FALSE, 10);
-- gtk_box_pack_start(GTK_BOX(hbox), left_vbox, FALSE, FALSE, 0);
--
-- id3_frame = gtk_frame_new(_("ID3 Tag:"));
-- gtk_box_pack_start(GTK_BOX(left_vbox), id3_frame,
-- FALSE, FALSE, 0);
--
-- table = gtk_table_new(5, 5, FALSE);
-- gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-- gtk_container_add(GTK_CONTAINER(id3_frame), table);
--
-- label = gtk_label_new(_("Title:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- title_entry = gtk_entry_new_with_max_length(30);
-- gtk_table_attach(GTK_TABLE(table), title_entry, 1, 4, 0, 1,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- label = gtk_label_new(_("Artist:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- artist_entry = gtk_entry_new_with_max_length(30);
-- gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 4, 1, 2,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- label = gtk_label_new(_("Album:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- album_entry = gtk_entry_new_with_max_length(30);
-- gtk_table_attach(GTK_TABLE(table), album_entry, 1, 4, 2, 3,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- label = gtk_label_new(_("Comment:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- comment_entry = gtk_entry_new_with_max_length(30);
-- gtk_table_attach(GTK_TABLE(table), comment_entry, 1, 4, 3, 4,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- label = gtk_label_new(_("Year:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- year_entry = gtk_entry_new_with_max_length(4);
-- gtk_widget_set_usize(year_entry, 40, -1);
-- gtk_table_attach(GTK_TABLE(table), year_entry, 1, 2, 4, 5,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- label = gtk_label_new(_("Track number:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- tracknum_entry = gtk_entry_new_with_max_length(3);
-- gtk_widget_set_usize(tracknum_entry, 40, -1);
-- gtk_table_attach(GTK_TABLE(table), tracknum_entry, 3, 4, 4, 5,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- label = gtk_label_new(_("Genre:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6,
-- GTK_FILL, GTK_FILL, 5, 5);
--
-- genre_combo = gtk_combo_new();
-- gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry),
-- FALSE);
-+ gtk_box_pack_start(GTK_BOX(filename_hbox), filename_entry, TRUE, TRUE, 0);
-+
-+ id3v1_vbox = gtk_vbox_new(FALSE, 10);
-+ id3v1_frame = gtk_frame_new("ID3v1 Information");
-+ gtk_box_pack_start(GTK_BOX(id3v1_vbox), id3v1_frame, TRUE, TRUE, 0);
-+
-+ id3v1_frame_vbox = gtk_vbox_new(FALSE,10);
-+ gtk_container_add(GTK_CONTAINER(id3v1_frame), id3v1_frame_vbox);
-+
-+ table = gtk_table_new(6, 6, FALSE);
-+ gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-+ //gtk_widget_set_usize(GTK_WIDGET(table), 325, -1);
-+ //gtk_container_add(GTK_CONTAINER(id3v1_frame), table);
-+ gtk_box_pack_start(GTK_BOX(id3v1_frame_vbox), table, FALSE, FALSE, 0);
-+
-+ v1_checkbox = gtk_check_button_new_with_label ("Disable ID3v1 Tag");
-+ gtk_signal_connect(GTK_OBJECT(v1_checkbox), "toggled", GTK_SIGNAL_FUNC(v1_toggle_cb), NULL);
-+ gtk_table_attach(GTK_TABLE(table), v1_checkbox, 1, 3, 0, 1,
-+ GTK_FILL, GTK_FILL, 0, 2);
-+
-+ label = gtk_label_new("Track number:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 3, 4, 0, 1,
-+ GTK_FILL, GTK_FILL, 5,5);
-+
-+ v1_tracknum_entry = gtk_entry_new_with_max_length(3);
-+ gtk_widget_set_usize(v1_tracknum_entry, 20, -1);
-+ gtk_table_attach(GTK_TABLE(table), v1_tracknum_entry, 4, 5, 0, 1,
-+ GTK_FILL, GTK_FILL, 0, 2);
-+
-+ label = gtk_label_new("Title:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v1_title_entry = gtk_entry_new_with_max_length(30);
-+ gtk_table_attach(GTK_TABLE(table), v1_title_entry, 1, 5, 1, 2,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Artist:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v1_artist_entry = gtk_entry_new_with_max_length(30);
-+ gtk_table_attach(GTK_TABLE(table), v1_artist_entry, 1, 5, 2, 3,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Album:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v1_album_entry = gtk_entry_new_with_max_length(30);
-+ gtk_table_attach(GTK_TABLE(table), v1_album_entry, 1, 5, 3, 4,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Comment:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v1_comment_entry = gtk_entry_new_with_max_length(30);
-+ gtk_table_attach(GTK_TABLE(table), v1_comment_entry, 1, 5, 4, 5,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Year:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v1_year_entry = gtk_entry_new_with_max_length(4);
-+ gtk_widget_set_usize(v1_year_entry, 45, -1);
-+ gtk_table_attach(GTK_TABLE(table), v1_year_entry, 1, 2, 5, 6,
-+ GTK_FILL, GTK_FILL, 0, 2);
-+
-+ label = gtk_label_new("Genre:");
-+ g_ptr_array_add(v1_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 5, 6,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v1_genre_combo = gtk_combo_new();
-+ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(v1_genre_combo)->entry),
-+ FALSE);
- if (!genre_list)
- {
- struct genre_item *item;
-@@ -408,77 +584,278 @@
- genre_list = g_list_prepend(genre_list, item);
- genre_list = g_list_sort(genre_list, genre_comp_func);
- }
-- genre_set_popdown(genre_combo, genre_list);
-- gtk_signal_connect(GTK_OBJECT(GTK_COMBO(genre_combo)->list),
-- "select-child", genre_selected, NULL);
--
-- gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 4, 5, 6,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
--
-- bbox = gtk_hbutton_box_new();
-- gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox),
-- GTK_BUTTONBOX_END);
-- gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
-- gtk_box_pack_start(GTK_BOX(left_vbox), bbox, FALSE, FALSE, 0);
--
-- save = gtk_button_new_with_label(_("Save"));
-- gtk_signal_connect(GTK_OBJECT(save), "clicked", save_cb, NULL);
-- GTK_WIDGET_SET_FLAGS(save, GTK_CAN_DEFAULT);
-- gtk_box_pack_start(GTK_BOX(bbox), save, TRUE, TRUE, 0);
-- gtk_widget_grab_default(save);
--
-- remove_id3 = gtk_button_new_with_label(_("Remove ID3"));
-- gtk_signal_connect(GTK_OBJECT(remove_id3), "clicked",
-- remove_id3_cb, NULL);
-- GTK_WIDGET_SET_FLAGS(remove_id3, GTK_CAN_DEFAULT);
-- gtk_box_pack_start(GTK_BOX(bbox), remove_id3, TRUE, TRUE, 0);
--
-- cancel = gtk_button_new_with_label(_("Cancel"));
-- gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked",
-- gtk_widget_destroy, GTK_OBJECT(window));
-- GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
-- gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
--
-- mpeg_frame = gtk_frame_new(_("MPEG Info:"));
-- gtk_box_pack_start(GTK_BOX(hbox), mpeg_frame, FALSE, FALSE, 0);
--
-- mpeg_box = gtk_vbox_new(FALSE, 5);
-- gtk_container_add(GTK_CONTAINER(mpeg_frame), mpeg_box);
-- gtk_container_set_border_width(GTK_CONTAINER(mpeg_box), 10);
-- gtk_box_set_spacing(GTK_BOX(mpeg_box), 0);
--
-- mpeg_level = gtk_label_new("");
-- gtk_widget_set_usize(mpeg_level, 120, -2);
-- gtk_misc_set_alignment(GTK_MISC(mpeg_level), 0, 0);
-- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_level, FALSE, FALSE, 0);
--
-- mpeg_bitrate = gtk_label_new("");
-- gtk_misc_set_alignment(GTK_MISC(mpeg_bitrate), 0, 0);
-- gtk_label_set_justify(GTK_LABEL(mpeg_bitrate),
-- GTK_JUSTIFY_LEFT);
-- gtk_box_pack_start(GTK_BOX(mpeg_box),
-- mpeg_bitrate, FALSE, FALSE, 0);
--
-- mpeg_samplerate = gtk_label_new("");
-- gtk_misc_set_alignment(GTK_MISC(mpeg_samplerate), 0, 0);
-- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_samplerate,
-- FALSE, FALSE, 0);
--
-- mpeg_flags = gtk_label_new("");
-- gtk_misc_set_alignment(GTK_MISC(mpeg_flags), 0, 0);
-- gtk_label_set_justify(GTK_LABEL(mpeg_flags), GTK_JUSTIFY_LEFT);
-- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_flags,
-- FALSE, FALSE, 0);
--
-- mpeg_fileinfo = gtk_label_new("");
-- gtk_misc_set_alignment(GTK_MISC(mpeg_fileinfo), 0, 0);
-- gtk_label_set_justify(GTK_LABEL(mpeg_fileinfo),
-- GTK_JUSTIFY_LEFT);
-- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_fileinfo,
-- FALSE, FALSE, 0);
-+ genre_set_popdown(v1_genre_combo, genre_list);
-+ gtk_signal_connect(GTK_OBJECT(GTK_COMBO(v1_genre_combo)->list),
-+ "select-child", v1_genre_selected, NULL);
-+
-+ gtk_table_attach(GTK_TABLE(table), v1_genre_combo, 3, 5, 5, 6,
-+ GTK_FILL | GTK_SHRINK, GTK_FILL |
-+ GTK_SHRINK, 0, 2);
-+
-+ bbox = gtk_hbutton_box_new();
-+ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START);
-+ gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 0);
-+ gtk_container_set_border_width(GTK_CONTAINER(bbox), 5);
-+ gtk_box_pack_start(GTK_BOX(id3v1_frame_vbox), bbox, FALSE, FALSE, 0);
-+
-+ copy_from = gtk_button_new_with_label("ID3v1 to ID3v2");
-+ gtk_signal_connect(GTK_OBJECT(copy_from), "clicked", GTK_SIGNAL_FUNC(copy_v1_to_v2_cb), NULL);
-+ // remove the next line to thicken the button width
-+ GTK_WIDGET_SET_FLAGS(copy_from, GTK_CAN_DEFAULT);
-+ gtk_box_pack_start(GTK_BOX(bbox), copy_from, FALSE, TRUE, 0);
-+
-+
-+ notebook = gtk_notebook_new ();
-+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);
-+
-+ label = gtk_label_new ("ID3v1");
-+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), id3v1_vbox, label);
-+
-+
-+ ////////////////////////////////////////////////////////////////////////////////////////////////////
-+ ////////////////////////////////////////////////////////////////////////////////////////////////////
-+
-+ id3v2_vbox = gtk_vbox_new(FALSE, 0);
-+
-+ id3v2_frame = gtk_frame_new("ID3v2 Information");
-+ gtk_box_pack_start(GTK_BOX(id3v2_vbox), id3v2_frame, FALSE, FALSE, 0);
-+
-+ id3v2_frame_vbox = gtk_vbox_new(FALSE, 0);
-+ gtk_container_add(GTK_CONTAINER(id3v2_frame), id3v2_frame_vbox);
-+
-+ table = gtk_table_new(6, 6, FALSE);
-+ gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-+ gtk_widget_set_usize(GTK_WIDGET(table), 400, -1);
-+ //gtk_container_add(GTK_CONTAINER(id3v2_frame), table);
-+ gtk_box_pack_start(GTK_BOX(id3v2_frame_vbox), table, FALSE, FALSE, 0);
-+
-+ v2_checkbox = gtk_check_button_new_with_label ("Disable ID3v2 Tag");
-+ gtk_signal_connect(GTK_OBJECT(v2_checkbox), "toggled", GTK_SIGNAL_FUNC(v2_toggle_cb), NULL);
-+ gtk_table_attach(GTK_TABLE(table), v2_checkbox, 1, 3, 0, 1,
-+ GTK_FILL, GTK_FILL, 0, 2);
-+
-+ label = gtk_label_new("Track number:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 3, 4, 0, 1,
-+ GTK_FILL, GTK_FILL, 5,5);
-+
-+ v2_tracknum_entry = gtk_entry_new_with_max_length(3);
-+ gtk_widget_set_usize(v2_tracknum_entry, 20, -1);
-+ gtk_table_attach(GTK_TABLE(table), v2_tracknum_entry, 4, 5, 0, 1,
-+ GTK_FILL, GTK_FILL, 0, 2);
-+
-+ label = gtk_label_new("Title:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_title_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_title_entry, 1, 5, 1, 2,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Artist:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_artist_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_artist_entry, 1, 5, 2, 3,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Album:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_album_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_album_entry, 1, 5, 3, 4,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Comment:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_comment_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_comment_entry, 1, 5, 4, 5,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Year:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_year_entry = gtk_entry_new_with_max_length(4);
-+ gtk_widget_set_usize(v2_year_entry, 45, -1);
-+ gtk_table_attach(GTK_TABLE(table), v2_year_entry, 1, 2, 5, 6,
-+ GTK_FILL, GTK_FILL, 0, 2);
-+
-+ label = gtk_label_new("Genre:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 5, 6,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_genre_combo = gtk_combo_new();
-+ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(v2_genre_combo)->entry), FALSE);
-+ genre_set_popdown(v2_genre_combo, genre_list);
-+ gtk_signal_connect(GTK_OBJECT(GTK_COMBO(v2_genre_combo)->list),
-+ "select-child", v2_genre_selected, NULL);
-+
-+ gtk_table_attach(GTK_TABLE(table), v2_genre_combo, 3, 5, 5, 6,
-+ GTK_FILL | GTK_SHRINK, GTK_FILL |
-+ GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Composer:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 6, 7,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_composer_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_composer_entry, 1, 5, 6, 7,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("Orig. Artist:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 7, 8,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_orig_artist_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_orig_artist_entry, 1, 5, 7, 8,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ label = gtk_label_new("URL:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 8, 9,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_url_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_url_entry, 1, 5, 8, 9,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+ label = gtk_label_new("Encoded By:");
-+ g_ptr_array_add(v2_labels_list, (gpointer)label);
-+ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 9, 10,
-+ GTK_FILL, GTK_FILL, 5, 5);
-+
-+ v2_encoded_by_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2);
-+ gtk_table_attach(GTK_TABLE(table), v2_encoded_by_entry, 1, 5, 9, 10,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-+ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2);
-+
-+ bbox = gtk_hbutton_box_new();
-+ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START);
-+ gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 0);
-+ gtk_container_set_border_width(GTK_CONTAINER(bbox), 5);
-+ gtk_box_pack_start(GTK_BOX(id3v2_frame_vbox), bbox, FALSE, FALSE, 0);
-+
-+ copy_to = gtk_button_new_with_label("ID3v2 to ID3v1");
-+ gtk_signal_connect(GTK_OBJECT(copy_to), "clicked", GTK_SIGNAL_FUNC(copy_v2_to_v1_cb), NULL);
-+ // remove the next line to thicken the button width
-+ GTK_WIDGET_SET_FLAGS(copy_to, GTK_CAN_DEFAULT);
-+ gtk_box_pack_start(GTK_BOX(bbox), copy_to, FALSE, TRUE, 0);
-+
-+ label = gtk_label_new ("ID3v2");
-+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), id3v2_vbox, label);
-+
-+
-+ ////////////////////////////////////////////////////////////////////////////////////////////////////
-+ ////////////////////////////////////////////////////////////////////////////////////////////////////
-+
-+ mpeg_frame = gtk_frame_new("MPEG Information");
-+ mpeg_hbox = gtk_hbox_new(FALSE,50);
-+ gtk_container_add(GTK_CONTAINER(mpeg_frame), mpeg_hbox);
-+
-+ mpeg_lvbox = gtk_vbox_new(FALSE, 5);
-+ gtk_container_set_border_width(GTK_CONTAINER(mpeg_lvbox), 10);
-+ gtk_box_pack_start(GTK_BOX(mpeg_hbox), mpeg_lvbox, FALSE, FALSE, 0);
-+
-+ //gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-+ //gtk_widget_set_usize(GTK_WIDGET(table), 325, -1);
-+ //gtk_container_add(GTK_CONTAINER(mpeg_frame), table);
-+
-+ mpeg_box = gtk_vbox_new(FALSE, 5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_hbox), mpeg_box, FALSE, FALSE, 0);
-+ gtk_container_set_border_width(GTK_CONTAINER(mpeg_box), 10);
-+ gtk_box_set_spacing(GTK_BOX(mpeg_box), 0);
-+
-+ mpeg_level = gtk_label_new("");
-+ //gtk_widget_set_usize(mpeg_level, 120, -2);
-+ gtk_label_set_justify (GTK_LABEL(mpeg_level), GTK_JUSTIFY_LEFT);
-+ gtk_misc_set_alignment(GTK_MISC(mpeg_level), 0, 0.5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_lvbox), mpeg_level, FALSE, FALSE, 0);
-+
-+ mpeg_samplerate = gtk_label_new("");
-+ gtk_label_set_justify (GTK_LABEL(mpeg_samplerate), GTK_JUSTIFY_LEFT);
-+ gtk_misc_set_alignment(GTK_MISC(mpeg_samplerate), 0, 0.5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_lvbox), mpeg_samplerate, FALSE, FALSE, 0);
-+
-+ mpeg_fileinfo = gtk_label_new("");
-+ gtk_label_set_justify (GTK_LABEL(mpeg_fileinfo), GTK_JUSTIFY_LEFT);
-+ gtk_misc_set_alignment(GTK_MISC(mpeg_fileinfo), 0, 0.5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_lvbox), mpeg_fileinfo, FALSE, FALSE, 0);
-+
-+ mpeg_rvbox = gtk_vbox_new(FALSE, 5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_hbox), mpeg_rvbox, FALSE, FALSE, 0);
-+ gtk_container_set_border_width(GTK_CONTAINER(mpeg_rvbox), 10);
-+
-+ mpeg_bitrate = gtk_label_new("");
-+ gtk_label_set_justify (GTK_LABEL(mpeg_bitrate), GTK_JUSTIFY_LEFT);
-+ gtk_misc_set_alignment(GTK_MISC(mpeg_bitrate), 0, 0.5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_rvbox), mpeg_bitrate, FALSE, FALSE, 0);
-+
-+ mpeg_flags = gtk_label_new("");
-+ gtk_label_set_justify (GTK_LABEL(mpeg_flags), GTK_JUSTIFY_LEFT);
-+ gtk_misc_set_alignment(GTK_MISC(mpeg_flags), 0, 0.5);
-+ gtk_box_pack_start(GTK_BOX(mpeg_rvbox), mpeg_flags, FALSE, FALSE, 0);
-+
-+ label = gtk_label_new ("MPEG");
-+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), mpeg_frame, label);
-+
-+ //////////////////////////////////////////////////////////////////
-+ //////////////////////////////////////////////////////////////////
-+
-+ // add notebook to window vbox
-+ gtk_box_pack_start(GTK_BOX(window_vbox), notebook, FALSE, FALSE, 0);
-+
-+ // add button box to window vbox
-+ bbox = gtk_hbutton_box_new();
-+ gtk_box_pack_start(GTK_BOX(window_vbox), bbox, FALSE, FALSE, 0);
-+
-+ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
-+ gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 5);
-+ //gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), child_w, child_h);
-+
-+ save = gtk_button_new_with_label("Save");
-+ gtk_signal_connect(GTK_OBJECT(save), "clicked", GTK_SIGNAL_FUNC(save_cb), NULL);
-+ //GTK_WIDGET_SET_FLAGS(save, GTK_CAN_DEFAULT);
-+ gtk_box_pack_start(GTK_BOX(bbox), save, TRUE, TRUE, 5);
-+ //gtk_widget_grab_default(save);
-+
-+ close = gtk_button_new_with_label("Close");
-+ gtk_signal_connect_object(GTK_OBJECT(close), "clicked",
-+ GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(window));
-+ //GTK_WIDGET_SET_FLAGS(close, GTK_CAN_DEFAULT);
-+ gtk_box_pack_start(GTK_BOX(bbox), close, TRUE, TRUE, 5);
-
-- gtk_widget_show_all(window);
-+ gtk_container_add(GTK_CONTAINER(window), window_vbox);
-+ gtk_widget_show_all(window);
- }
-
- if (current_filename)
-@@ -495,29 +872,43 @@
- title = g_strdup(g_basename(filename));
- if ((tmp = strrchr(title, '.')) != NULL)
- *tmp = '\0';
-- gtk_entry_set_text(GTK_ENTRY(title_entry), title);
-+ gtk_entry_set_text(GTK_ENTRY(v1_title_entry), title);
-+ gtk_entry_set_text(GTK_ENTRY(v2_title_entry), title);
- g_free(title);
-
-- gtk_entry_set_text(GTK_ENTRY(artist_entry), "");
-- gtk_entry_set_text(GTK_ENTRY(album_entry), "");
-- gtk_entry_set_text(GTK_ENTRY(year_entry), "");
-- gtk_entry_set_text(GTK_ENTRY(tracknum_entry), "");
-- gtk_entry_set_text(GTK_ENTRY(comment_entry), "");
-- gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list),
-+ gtk_entry_set_text(GTK_ENTRY(v1_artist_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v1_album_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v1_year_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v1_tracknum_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v1_comment_entry), "");
-+ gtk_list_select_item(GTK_LIST(GTK_COMBO(v1_genre_combo)->list),
-+ genre_find_index(genre_list, 0xff));
-+
-+ gtk_entry_set_text(GTK_ENTRY(v2_artist_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_album_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_year_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_tracknum_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_comment_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_composer_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_orig_artist_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_url_entry), "");
-+ gtk_entry_set_text(GTK_ENTRY(v2_encoded_by_entry), "");
-+ gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list),
- genre_find_index(genre_list, 0xff));
-+
- gtk_label_set_text(GTK_LABEL(mpeg_level), "MPEG ?, layer ?");
- gtk_label_set_text(GTK_LABEL(mpeg_bitrate), "");
- gtk_label_set_text(GTK_LABEL(mpeg_samplerate), "");
- gtk_label_set_text(GTK_LABEL(mpeg_flags), "");
- gtk_label_set_text(GTK_LABEL(mpeg_fileinfo), "");
--
- if (!strncasecmp(filename, "http://", 7))
- {
- file_info_http(filename);
- return;
- }
-
-- gtk_widget_set_sensitive(id3_frame, TRUE);
-+ gtk_widget_set_sensitive(id3v1_frame, TRUE);
-+ gtk_widget_set_sensitive(id3v2_frame, TRUE);
-
- if ((fh = fopen(current_filename, "rb")) != NULL)
- {
-@@ -525,40 +916,95 @@
- unsigned char tmp[4];
- struct frame frm;
- gboolean id3_found = FALSE;
-+ char *temp = NULL;
-+ struct id3_tag *id3 = NULL;
-
-- fseek(fh, -sizeof (tag), SEEK_END);
-- if (fread(&tag, 1, sizeof (tag), fh) == sizeof (tag))
-+ /*
-+ * Try reading ID3v2 tag.
-+ */
-+ if (!mpg123_cfg.disable_id3v2)
- {
-- if (!strncmp(tag.tag, "TAG", 3))
-+ fseek(fh, 0, SEEK_SET);
-+ id3 = id3_open_fp(fh, 0);
-+ if (id3)
- {
-- id3_found = TRUE;
-- set_entry_tag(GTK_ENTRY(title_entry),
-- tag.title, 30);
-- set_entry_tag(GTK_ENTRY(artist_entry),
-- tag.artist, 30);
-- set_entry_tag(GTK_ENTRY(album_entry),
-- tag.album, 30);
-- set_entry_tag(GTK_ENTRY(year_entry),
-- tag.year, 4);
-- /* Check for v1.1 tags */
-- if (tag.u.v1_1.__zero == 0)
-- {
-- char *temp = g_strdup_printf("%d", tag.u.v1_1.track_number);
-- set_entry_tag(GTK_ENTRY(comment_entry),
-- tag.u.v1_1.comment, 28);
-- gtk_entry_set_text(GTK_ENTRY(tracknum_entry), temp);
-- g_free(temp);
-- }
-- else
-- {
-- set_entry_tag(GTK_ENTRY(comment_entry),
-- tag.u.v1_0.comment, 30);
-- gtk_entry_set_text(GTK_ENTRY(tracknum_entry), "");
-- }
-+ mpg123_get_id3v2(id3, &id3v2tag);
-+ set_entry_tag(GTK_ENTRY(v2_title_entry),
-+ id3v2tag.title, 128);
-+ set_entry_tag(GTK_ENTRY(v2_artist_entry),
-+ id3v2tag.artist, 128);
-+ set_entry_tag(GTK_ENTRY(v2_album_entry),
-+ id3v2tag.album, 128);
-+ set_entry_tag(GTK_ENTRY(v2_comment_entry),
-+ id3v2tag.comment, 256);
-+ set_entry_tag(GTK_ENTRY(v2_composer_entry),
-+ id3v2tag.composer, MAX_ENTRY_LEN2);
-+ set_entry_tag(GTK_ENTRY(v2_orig_artist_entry),
-+ id3v2tag.orig_artist, MAX_ENTRY_LEN2);
-+ set_entry_tag(GTK_ENTRY(v2_url_entry),
-+ id3v2tag.url, MAX_ENTRY_LEN2);
-+ set_entry_tag(GTK_ENTRY(v2_encoded_by_entry),
-+ id3v2tag.encoded_by, MAX_ENTRY_LEN2);
-
-- gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list), genre_find_index(genre_list, tag.genre));
-+ temp = g_strdup_printf("%d", id3v2tag.track_number);
-+ gtk_entry_set_text(GTK_ENTRY(v2_tracknum_entry), temp);
-+ g_free(temp);
-+
-+ temp = g_strdup_printf("%d", id3v2tag.year);
-+ gtk_entry_set_text(GTK_ENTRY(v2_year_entry), temp);
-+ g_free(temp);
-+
-+ printf("Loading genre: %s", id3v2tag.genre);
-+ gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list), genre_find_index_str(genre_list, id3v2tag.genre));
-+ id3_close(id3);
- }
-+ else
-+ {
-+ // Grey out the id3v2 tab
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(v2_checkbox), TRUE);
-+ }
-+ }
-+
-+ /*
-+ * Try reading ID3v1 tag.
-+ */
-+ fseek(fh, -sizeof (id3v1tag), SEEK_END);
-+ if ( (fread(&id3v1tag, 1, sizeof (id3v1tag), fh) == sizeof (id3v1tag)) &&
-+ !strncmp(id3v1tag.tag, "TAG", 3))
-+ {
-+ id3_found = TRUE;
-+ set_entry_tag(GTK_ENTRY(v1_title_entry),
-+ id3v1tag.title, 30);
-+ set_entry_tag(GTK_ENTRY(v1_artist_entry),
-+ id3v1tag.artist, 30);
-+ set_entry_tag(GTK_ENTRY(v1_album_entry),
-+ id3v1tag.album, 30);
-+ set_entry_tag(GTK_ENTRY(v1_year_entry),
-+ id3v1tag.year, 4);
-+ /* Check for v1.1 tags */
-+ if (id3v1tag.u.v1_1.__zero == 0)
-+ {
-+ char *temp = g_strdup_printf("%d", id3v1tag.u.v1_1.track_number);
-+ set_entry_tag(GTK_ENTRY(v1_comment_entry),
-+ id3v1tag.u.v1_1.comment, 28);
-+ gtk_entry_set_text(GTK_ENTRY(v1_tracknum_entry), temp);
-+ g_free(temp);
-+ }
-+ else
-+ {
-+ set_entry_tag(GTK_ENTRY(v1_comment_entry),
-+ id3v1tag.u.v1_0.comment, 30);
-+ gtk_entry_set_text(GTK_ENTRY(v1_tracknum_entry), "");
-+ }
-+
-+ gtk_list_select_item(GTK_LIST(GTK_COMBO(v1_genre_combo)->list), genre_find_index(genre_list, id3v1tag.genre));
- }
-+ else
-+ {
-+ // Grey out id3v1 tab
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(v1_checkbox), TRUE);
-+ }
-+
- rewind(fh);
- if (fread(tmp, 1, 4, fh) != 4)
- {
-diff -Naur xmms-1.2.9-orig/Input/mpg123/id3.h xmms-1.2.9/Input/mpg123/id3.h
---- xmms-1.2.9-orig/Input/mpg123/id3.h Thu Jan 29 06:43:24 2004
-+++ xmms-1.2.9/Input/mpg123/id3.h Thu Jan 29 05:20:31 2004
-@@ -351,6 +351,7 @@
- int id3_set_text(struct id3_frame *, char *);
- int id3_set_text_number(struct id3_frame *, int);
- gboolean id3_frame_is_text(struct id3_frame *frame);
-+char* id3_get_comm(struct id3_frame *frame);
-
- /* From id3_frame_content.c */
- char *id3_get_content(struct id3_frame *);
-diff -Naur xmms-1.2.9-orig/Input/mpg123/id3_frame_text.c xmms-1.2.9/Input/mpg123/id3_frame_text.c
---- xmms-1.2.9-orig/Input/mpg123/id3_frame_text.c Thu Jan 29 06:43:24 2004
-+++ xmms-1.2.9/Input/mpg123/id3_frame_text.c Thu Jan 29 05:18:54 2004
-@@ -38,15 +38,15 @@
-
- char *id3_utf16_to_ascii(void *utf16)
- {
-- char ascii[256];
-- char *uc = (char *) utf16 + 2;
-- int i;
--
-- for (i = 0; *uc != 0 && i < sizeof(ascii); i++, uc += 2)
-- ascii[i] = *uc;
--
-- ascii[i] = 0;
-- return g_strdup(ascii);
-+ char ascii[256];
-+ char *uc = (char *) utf16 + 2;
-+ int i;
-+
-+ for (i = 0; *uc != 0 && i < sizeof(ascii); i++, uc += 2)
-+ ascii[i] = *uc;
-+
-+ ascii[i] = 0;
-+ return g_strdup(ascii);
- }
-
-
-@@ -59,25 +59,25 @@
- */
- gint8 id3_get_encoding(struct id3_frame *frame)
- {
-- /* Type check */
-- if (!id3_frame_is_text(frame) &&
-- frame->fr_desc->fd_id != ID3_WXXX &&
-- frame->fr_desc->fd_id != ID3_IPLS &&
-- frame->fr_desc->fd_id != ID3_USLT &&
-- frame->fr_desc->fd_id != ID3_SYLT &&
-- frame->fr_desc->fd_id != ID3_COMM &&
-- frame->fr_desc->fd_id != ID3_APIC &&
-- frame->fr_desc->fd_id != ID3_GEOB &&
-- frame->fr_desc->fd_id != ID3_USER &&
-- frame->fr_desc->fd_id != ID3_OWNE &&
-- frame->fr_desc->fd_id != ID3_COMR)
-- return -1;
--
-- /* Check if frame is compressed */
-- if (id3_decompress_frame(frame) == -1)
-- return -1;
-+ /* Type check */
-+ if (!id3_frame_is_text(frame) &&
-+ frame->fr_desc->fd_id != ID3_WXXX &&
-+ frame->fr_desc->fd_id != ID3_IPLS &&
-+ frame->fr_desc->fd_id != ID3_USLT &&
-+ frame->fr_desc->fd_id != ID3_SYLT &&
-+ frame->fr_desc->fd_id != ID3_COMM &&
-+ frame->fr_desc->fd_id != ID3_APIC &&
-+ frame->fr_desc->fd_id != ID3_GEOB &&
-+ frame->fr_desc->fd_id != ID3_USER &&
-+ frame->fr_desc->fd_id != ID3_OWNE &&
-+ frame->fr_desc->fd_id != ID3_COMR)
-+ return -1;
-+
-+ /* Check if frame is compressed */
-+ if (id3_decompress_frame(frame) == -1)
-+ return -1;
-
-- return *(gint8 *) frame->fr_data;
-+ return *(gint8 *) frame->fr_data;
- }
-
-
-@@ -92,25 +92,25 @@
- {
- /* Type check */
- if ( frame->fr_desc->fd_idstr[0] != 'T' &&
-- frame->fr_desc->fd_id != ID3_WXXX &&
-- frame->fr_desc->fd_id != ID3_IPLS &&
-- frame->fr_desc->fd_id != ID3_USLT &&
-- frame->fr_desc->fd_id != ID3_SYLT &&
-- frame->fr_desc->fd_id != ID3_COMM &&
-- frame->fr_desc->fd_id != ID3_APIC &&
-- frame->fr_desc->fd_id != ID3_GEOB &&
-- frame->fr_desc->fd_id != ID3_USER &&
-- frame->fr_desc->fd_id != ID3_OWNE &&
-- frame->fr_desc->fd_id != ID3_COMR )
-- return -1;
-+ frame->fr_desc->fd_id != ID3_WXXX &&
-+ frame->fr_desc->fd_id != ID3_IPLS &&
-+ frame->fr_desc->fd_id != ID3_USLT &&
-+ frame->fr_desc->fd_id != ID3_SYLT &&
-+ frame->fr_desc->fd_id != ID3_COMM &&
-+ frame->fr_desc->fd_id != ID3_APIC &&
-+ frame->fr_desc->fd_id != ID3_GEOB &&
-+ frame->fr_desc->fd_id != ID3_USER &&
-+ frame->fr_desc->fd_id != ID3_OWNE &&
-+ frame->fr_desc->fd_id != ID3_COMR )
-+ return -1;
-
- /* Check if frame is compressed */
- if (id3_decompress_frame(frame) == -1)
-- return -1;
-+ return -1;
-
- /* Changing the encoding of frames is not supported yet */
- if ( *(gint8 *) frame->fr_data != encoding )
-- return -1;
-+ return -1;
-
- /* Set encoding */
- *(gint8 *) frame->fr_data = encoding;
-@@ -128,44 +128,44 @@
- {
- /* Type check */
- if ( frame->fr_desc->fd_idstr[0] != 'T' )
-- return NULL;
-+ return NULL;
-
- /* Check if frame is compressed */
- if (id3_decompress_frame(frame) == -1)
-- return NULL;
-+ return NULL;
-
- if ( frame->fr_desc->fd_id == ID3_TXXX ) {
-- /*
-- * This is a user defined text frame. Skip the description.
-- */
-- switch ( *(guint8 *) frame->fr_data ) {
-- case ID3_ENCODING_ISO_8859_1:
-- {
-- char *text = (char *) frame->fr_data + 1;
--
-- while ( *text != 0 )
-- text++;
--
-- return g_strdup(++text);
-- }
-- case ID3_ENCODING_UTF16:
-- {
-- char *text16 = (char *) frame->fr_data + 1;
--
-- while (*text16 != 0 || *(text16 + 1) != 0)
-- text16 += 2;
--
-- return id3_utf16_to_ascii(text16 + 2);
-- }
-- default:
-- return NULL;
-- }
-+ /*
-+ * This is a user defined text frame. Skip the description.
-+ */
-+ switch ( *(guint8 *) frame->fr_data ) {
-+ case ID3_ENCODING_ISO_8859_1:
-+ {
-+ char *text = (char *) frame->fr_data + 1;
-+
-+ while ( *text != 0 )
-+ text++;
-+
-+ return g_strdup(++text);
-+ }
-+ case ID3_ENCODING_UTF16:
-+ {
-+ char *text16 = (char *) frame->fr_data + 1;
-+
-+ while (*text16 != 0 || *(text16 + 1) != 0)
-+ text16 += 2;
-+
-+ return id3_utf16_to_ascii(text16 + 2);
-+ }
-+ default:
-+ return NULL;
-+ }
- }
-
- if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1)
-- return g_strdup((char *) frame->fr_data + 1);
-+ return g_strdup((char *) frame->fr_data + 1);
- else
-- return id3_utf16_to_ascii(((char *) frame->fr_data + 1));
-+ return id3_utf16_to_ascii(((char *) frame->fr_data + 1));
- }
-
-
-@@ -179,20 +179,20 @@
- {
- /* Type check */
- if ( frame->fr_desc->fd_idstr[0] != 'T' )
-- return NULL;
-+ return NULL;
-
- /* If predefined text frame, return description. */
- if ( frame->fr_desc->fd_id != ID3_TXXX )
-- return frame->fr_desc->fd_description;
-+ return frame->fr_desc->fd_description;
-
- /* Check if frame is compressed */
- if (id3_decompress_frame(frame) == -1)
-- return NULL;
-+ return NULL;
-
- if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1)
-- return g_strdup((char *) frame->fr_data + 1);
-+ return g_strdup((char *) frame->fr_data + 1);
- else
-- return id3_utf16_to_ascii((char *) frame->fr_data + 1);
-+ return id3_utf16_to_ascii((char *) frame->fr_data + 1);
- }
-
-
-@@ -209,42 +209,42 @@
-
- /* Check if frame is compressed */
- if (id3_decompress_frame(frame) == -1)
-- return -1;
-+ return -1;
-
- /*
- * Generate integer according to encoding.
- */
- switch ( *(guint8 *) frame->fr_data ) {
-- case ID3_ENCODING_ISO_8859_1:
-- {
-- char *text = ((char *) frame->fr_data) + 1;
--
-- while ( *text >= '0' && *text <= '9' ) {
-- number *= 10;
-- number += *text - '0';
-- text++;
-- }
-+ case ID3_ENCODING_ISO_8859_1:
-+ {
-+ char *text = ((char *) frame->fr_data) + 1;
-+
-+ while ( *text >= '0' && *text <= '9' ) {
-+ number *= 10;
-+ number += *text - '0';
-+ text++;
-+ }
-+
-+ return number;
-+ }
-+ case ID3_ENCODING_UTF16:
-+ {
-+ char *text = ((char *) frame->fr_data) + 3;
-+
-+/* if (*(gint16 *) frame->fr_data == 0xfeff) */
-+/* text++; */
-+
-+ while ( *text >= '0' && *text <= '9' ) {
-+ number *= 10;
-+ number += *text - '0';
-+ text++;
-+ }
-
-- return number;
-- }
-- case ID3_ENCODING_UTF16:
-- {
-- char *text = ((char *) frame->fr_data) + 3;
--
--/* if (*(gint16 *) frame->fr_data == 0xfeff) */
--/* text++; */
--
-- while ( *text >= '0' && *text <= '9' ) {
-- number *= 10;
-- number += *text - '0';
-- text++;
-- }
-+ return number;
-+ }
-
-- return number;
-- }
--
-- default:
-- return -1;
-+ default:
-+ return -1;
- }
- }
-
-@@ -260,7 +260,7 @@
- {
- /* Type check */
- if ( frame->fr_desc->fd_idstr[0] != 'T' )
-- return -1;
-+ return -1;
-
- /*
- * Release memory occupied by previous data.
-@@ -289,6 +289,58 @@
- }
-
-
-+
-+
-+char* id3_get_comm(struct id3_frame *frame)
-+{
-+
-+ /* Type check */
-+ if ( frame->fr_desc->fd_id != ID3_COMM )
-+ return NULL;
-+
-+ /* Check if frame is compressed */
-+ if (id3_decompress_frame(frame) == -1)
-+ return NULL;
-+
-+ /*
-+ * <Header for 'Comment', ID: "COMM">
-+ * Text encoding $xx
-+ * Language $xx xx xx
-+ * Short content descrip. <text string according to encoding> $00 (00)
-+ * The actual text <full text string according to encoding>
-+ *
-+ * Skip language and short description.
-+ */
-+ switch ( *(guint8 *) frame->fr_data ) {
-+ case ID3_ENCODING_ISO_8859_1:
-+ {
-+ char *text = (char *) frame->fr_data + 4;
-+
-+ while ( *text != 0 )
-+ text++;
-+
-+ return g_strdup(++text);
-+ }
-+ case ID3_ENCODING_UTF16:
-+ {
-+ char *text16 = (char *) frame->fr_data + 4;
-+
-+ while (*text16 != 0 || *(text16 + 1) != 0)
-+ text16 += 2;
-+
-+ return id3_utf16_to_ascii(text16 + 2);
-+ }
-+ default:
-+ return NULL;
-+ }
-+
-+ if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1)
-+ return g_strdup((char *) frame->fr_data + 1);
-+ else
-+ return id3_utf16_to_ascii(((char *) frame->fr_data + 1));
-+}
-+
-+
- /*
- * Function id3_set_text_number (frame, number)
- *
-@@ -304,25 +356,25 @@
-
- /* Type check */
- if ( frame->fr_desc->fd_idstr[0] != 'T' )
-- return -1;
-+ return -1;
-
- /*
- * Release memory occupied by previous data.
- */
- id3_frame_clear_data(frame);
--
-+
- /*
- * Create a string with a reversed number.
- */
- pos = 0;
- while ( number > 0 && pos < 64 ) {
-- buf[pos++] = (number % 10) + '0';
-- number /= 10;
-+ buf[pos++] = (number % 10) + '0';
-+ number /= 10;
- }
- if ( pos == 64 )
-- return -1;
-+ return -1;
- if ( pos == 0 )
-- buf[pos++] = '0';
-+ buf[pos++] = '0';
-
- /*
- * Allocate memory for new data.
-@@ -336,7 +388,7 @@
- *(gint8 *) frame->fr_raw_data = ID3_ENCODING_ISO_8859_1;
- text = (char *) frame->fr_raw_data + 1;
- while ( --pos >= 0 )
-- *text++ = buf[pos];
-+ *text++ = buf[pos];
- *text = '\0';
-
- frame->fr_altered = 1;
-@@ -350,9 +402,9 @@
-
- gboolean id3_frame_is_text(struct id3_frame *frame)
- {
-- if (frame && frame->fr_desc &&
-- (frame->fr_desc->fd_idstr[0] == 'T' ||
-- frame->fr_desc->fd_idstr[0] == 'W' ))
-- return TRUE;
-- return FALSE;
-+ if (frame && frame->fr_desc &&
-+ (frame->fr_desc->fd_idstr[0] == 'T' ||
-+ frame->fr_desc->fd_idstr[0] == 'W' ))
-+ return TRUE;
-+ return FALSE;
- }
-diff -Naur xmms-1.2.9-orig/Input/mpg123/lib_id3v2.h xmms-1.2.9/Input/mpg123/lib_id3v2.h
---- xmms-1.2.9-orig/Input/mpg123/lib_id3v2.h Wed Dec 31 19:00:00 1969
-+++ xmms-1.2.9/Input/mpg123/lib_id3v2.h Thu Jan 29 05:20:31 2004
-@@ -0,0 +1,1280 @@
-+/* the id3v2.3 library.
-+ * (c)2002 by Samuel Abels (sam@manicsadness.com)
-+ * This project's homepage is: http://software.manicsadness.com/cantus
-+ *
-+ * This library is designed for easyest possible access to id3 V2 tags.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#ifndef DLL_H
-+#define DLL_H
-+typedef struct DLL_s
-+{
-+ void *prev;
-+ void *data;
-+ void *next;
-+} DLL;
-+#endif
-+
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+
-+#ifndef id3Tag_def
-+#define id3Tag_def
-+
-+typedef struct id3Tag_s
-+{
-+ char title[1024];
-+ char artist[1024];
-+ char album[1024];
-+ char year[5];
-+ char comment[1024];
-+ char track[3];
-+ char genre[512];
-+ char composer[1024];
-+ char url[1024];
-+ char orig_artist[1024];
-+ char enc_by[1024];
-+ unsigned int size;
-+ short int has_footer;
-+} id3Tag;
-+
-+typedef struct id3v2Tag_s
-+{
-+// header
-+ int tag_size;
-+ short int unsync;
-+ short int has_extheader;
-+ short int is_experimental;
-+//extheader
-+ int extheader_size;
-+ int padding_size;
-+ short int crc_data_present;
-+ char crc_data[4];
-+// frames
-+ DLL *frames;
-+} id3v2Tag;
-+
-+typedef struct id3v2Frame_s
-+{
-+ unsigned char id[4];
-+ int datasize;
-+ short int tagalter;
-+ short int filealter;
-+ short int readonly;
-+ short int compression;
-+ short int encryption;
-+ short int grouping;
-+ char *data;
-+} id3v2Frame;
-+
-+#endif
-+
-+/* the id3v2.3 library.
-+ * (c)2002 by Samuel Abels (sam@manicsadness.com)
-+ * This project's homepage is: http://software.manicsadness.com/cantus
-+ *
-+ * This library is designed for easyest possible access to id3 V2 tags.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <ctype.h>
-+#include "charset.h"
-+
-+
-+
-+/***************************************************************************************
-+ * BELOW FOLLOW THE STATICS
-+ ***************************************************************************************/
-+// Return the last item of an doubly linked list
-+static DLL *
-+dll_last (DLL *list)
-+{
-+ if( list == NULL )
-+ return (NULL);
-+
-+ while ( list->next != NULL )
-+ list = list->next;
-+
-+ return (list);
-+}
-+
-+// Append an item to the doubly linked list
-+static DLL *
-+dll_append (DLL *list, void *data)
-+{
-+ DLL *item = malloc (sizeof(DLL));
-+ DLL *lastitem = dll_last(list);
-+
-+ item->data = data;
-+ item->next = NULL;
-+
-+ if ( lastitem == NULL )
-+ {
-+ item->prev = NULL;
-+ return (item);
-+ }
-+ else
-+ {
-+ item->prev = lastitem;
-+ lastitem->next = item;
-+ }
-+
-+ return list;
-+}
-+
-+static DLL *
-+dll_remove (DLL *list, void *data)
-+{
-+ DLL *item = list;
-+
-+ while ( item )
-+ {
-+ if ( item->data == data )
-+ {
-+ if ( item->prev == NULL
-+ && item->next == NULL )
-+ {
-+// No other items there? Then return a zero pointer.
-+ free (item);
-+ return (NULL);
-+ }
-+ if ( item->prev == NULL )
-+ {
-+// remove the first item of the list here...
-+ list = item->next;
-+ list->prev = NULL;
-+ free (item);
-+
-+ break;
-+ }
-+ if ( item->next == NULL )
-+ {
-+// ...remove the last item of the list here...
-+ ((DLL*)(item->prev))->next = NULL;
-+ free (item);
-+
-+ break;
-+ }
-+// ...or other items here
-+ ((DLL*)(item->prev))->next = item->next;
-+ ((DLL*)(item->next))->prev = item->prev;
-+ free (item);
-+
-+ break;
-+ }
-+ item = item->next;
-+ }
-+
-+ return list;
-+}
-+
-+// Free a doubly linked list
-+static DLL *
-+dll_free (DLL *list)
-+{
-+ DLL *item = list;
-+ DLL *current = NULL;
-+
-+ while (item)
-+ {
-+ current = item;
-+ item = item->next;
-+
-+ free (current);
-+ }
-+
-+ return NULL;
-+}
-+
-+/*
-+ * Converts all occurences of a CR/LF to LF
-+ */
-+static void
-+crlf2cr (char *source)
-+{
-+ char *psource = source;
-+ char destination[2048];
-+
-+ if(source != NULL)
-+ {
-+ memset (destination, 0, 2048);
-+ for (psource = source; *psource != '\0'; psource++)
-+ {
-+ if(*psource == 13
-+ && *(psource+1) == 10 )
-+ {
-+ psource++;
-+ }
-+ destination[strlen(destination)] = *psource;
-+ }
-+ }
-+
-+ strncpy (source, destination, strlen(destination)+1);
-+}
-+
-+
-+/*
-+ * Converts all occurences of a LF to CR/LF
-+ */
-+static void
-+cr2crlf (char *source)
-+{
-+ char *psource = source;
-+ char destination[2048];
-+
-+ if( source != NULL )
-+ {
-+ memset (destination, 0, 2048);
-+ for (psource = source; *psource != '\0'; psource++)
-+ {
-+ if (*psource == 10)
-+ destination[strlen(destination)] = 13;
-+ destination[strlen(destination)] = *psource;
-+ }
-+ }
-+
-+ strncpy (source, destination, strlen(destination)+1);
-+}
-+
-+
-+
-+
-+/*
-+ * Reads the first ten bytes of an file and checks, if it's a valid ID3 V2.3 file
-+ * If it is, the header flags are stored in the tag struct.
-+ * Returns TRUE on a valid header, otherwise FALSE.
-+ */
-+static short int
-+check_header (FILE *mp3file, id3v2Tag *v2)
-+{
-+ unsigned char buf[10];
-+
-+// get header (=first ten bytes of the file)
-+ fseek (mp3file, 0, SEEK_SET);
-+ if ( fread (buf, 1, 10, mp3file) < 10 )
-+ return (FALSE);
-+
-+// a valid tag must begin with "ID3" followed by the version (checked below)
-+// followed by a flag byte, where the last five bytes are unused and must be FALSE
-+ if ( memcmp(buf, "ID3", 3) != 0
-+ || (buf[5] & 31) != 0 )
-+ return (FALSE);
-+
-+// check if version is supported
-+ if ( buf[3] != 3
-+ || buf[4] != 0 )
-+ return (FALSE);
-+
-+// The next thing to come is the tag size. These are 4 bytes, the MSB should always be set to zero. check!
-+ if ( (buf[6] & 128) != 0
-+ || (buf[7] & 128) != 0
-+ || (buf[8] & 128) != 0
-+ || (buf[9] & 128) != 0 )
-+ return (FALSE);
-+
-+// The tag size is encoded to be syncsave, so I got to decode it.
-+// The tag size is the size of the complete tag EXCLUDING the 10-byte header.
-+ v2->tag_size = buf[9] + (buf[8] << 7) + (buf[7] << 14) + (buf[6] << 21);
-+
-+// ok, so were save. put the flags in the nicer struct.
-+ v2->unsync = (buf[5] & 128) >> 7;
-+ v2->has_extheader = (buf[5] & 64) >> 6;
-+ v2->is_experimental = (buf[5] & 32) >> 5;
-+
-+ return (TRUE);
-+}
-+
-+
-+
-+
-+
-+/*
-+ * Reads the extheader of a valid ID3V2.3 file and checks, if it's a valid.
-+ * If it is, the extheader flags are stored in the tag struct.
-+ * Returns TRUE on a valid extheader, otherwise FALSE.
-+ */
-+static short int
-+check_extheader (FILE *mp3file, id3v2Tag *v2)
-+{
-+ unsigned char buf[10];
-+
-+// Read id3 extheader intro (5 bytes)
-+ fseek (mp3file, 10, SEEK_SET);
-+ if ( fread(buf, 1, 5, mp3file) < 5 )
-+ return (FALSE);
-+
-+// First comes the extheader size. These are 4 bytes, the MSB should always be set to zero. check!
-+ if( (buf[0] & 128) != 0
-+ || (buf[1] & 128) != 0
-+ || (buf[2] & 128) != 0
-+ || (buf[3] & 128) != 0 )
-+ return (FALSE);
-+
-+// OK. In ID3V2.3 only six byte or ten byte extheaders are allowed.
-+ if( v2->extheader_size != 6
-+ && v2->extheader_size != 10 )
-+ return (FALSE);
-+
-+// The first four bytes specify the extheader size.
-+ v2->extheader_size = buf[3] + (buf[2] << 7) + (buf[1] << 14) + (buf[0] << 21);
-+
-+// The fifth byte specifies extendened flags. (in fact, only one flag is used for ID3V2.3
-+// The MSB of the byte 5 specifies, if there is CRC data to come, appended to the extheader.
-+ if( (buf[4] & 127) != 0
-+ || buf[5] != 0 )
-+ return (FALSE);
-+
-+ v2->crc_data_present = (buf[4] & 128) >> 7;
-+
-+// if crc data is present, the extheader size must be ten bytes, otherwise 6.
-+ if ( (v2->extheader_size == 6 && v2->crc_data_present == TRUE)
-+ || (v2->extheader_size == 10 && v2->crc_data_present == FALSE) )
-+ return (FALSE);
-+
-+// now come four bytes specifying the padding size
-+ if ( (buf[6] & 128) != 0
-+ || (buf[7] & 128) != 0
-+ || (buf[8] & 128) != 0
-+ || (buf[9] & 128) != 0 )
-+ return (FALSE);
-+
-+ v2->padding_size = buf[9] + (buf[8] << 7) + (buf[7] << 14) + (buf[6] << 21);
-+
-+// Now to the optional crc data.
-+ if( v2->crc_data_present )
-+ {
-+ if( fread (buf, 1, 4, mp3file) < 4 )
-+ return (FALSE);
-+
-+ memcpy (v2->crc_data, buf, 4);
-+ }
-+
-+ return (TRUE);
-+}
-+
-+
-+
-+
-+
-+/*
-+ * Reads the complete frames of a valid ID3V2.3 file and checks, if they are valid.
-+ * If they are, the flags are stored in a DLL and appended to the tag struct.
-+ * Returns TRUE on success, otherwise FALSE.
-+ */
-+static short int
-+read_frames (FILE *mp3file, id3v2Tag *v2)
-+{
-+ unsigned char buf[10];
-+ int numframes = 0;
-+ unsigned int totalframesize = 0;
-+ id3v2Frame *frame = NULL;
-+
-+// set the position to the first frame header (header = 10 bytes + extheadersize + 4 bytes "extheaderheader")
-+ if (v2->has_extheader)
-+ fseek (mp3file, 10 + v2->extheader_size + 4, SEEK_SET);
-+ else
-+ fseek (mp3file, 10, SEEK_SET);
-+
-+// If the tag size is too small for frames, return with an error.
-+ if ( ((v2->tag_size + 10) - v2->padding_size) <= ftell(mp3file) )
-+ return FALSE;
-+
-+// now read all the frames
-+ numframes = 0;
-+ v2->frames = NULL;
-+ while ( ftell (mp3file) < ((v2->tag_size + 10) - v2->padding_size) )
-+ {
-+ frame = calloc (1, sizeof(id3v2Frame));
-+
-+// the frame header is ten bytes long
-+ if ( fread (buf, 1, 10, mp3file) < 10 )
-+ goto error;
-+
-+// if we are already in the padding, we must no longer look for frames...
-+ if ( buf[0] == 0 && buf[1] == 0 && buf[2] == 0 && buf[3] == 0 )
-+ {
-+ if (numframes == 0)
-+ goto error;
-+
-+ free (frame);
-+ break;
-+ }
-+
-+// first come four characters identifying the frame. It must be alphanumeric.
-+ if ( !isalnum(buf[0]) || !isalnum(buf[1]) || !isalnum(buf[2]) || !isalnum(buf[3]) )
-+ goto error;
-+
-+ *(frame->id) = buf[0];
-+ *(frame->id + 1) = buf[1];
-+ *(frame->id + 2) = buf[2];
-+ *(frame->id + 3) = buf[3];
-+
-+// then, the frame size is to come. Again, the four MSBs must be zero.
-+ if ( (buf[4] & 128) != 0
-+ || (buf[5] & 128) != 0
-+ || (buf[6] & 128) != 0
-+ || (buf[7] & 128) != 0 )
-+ goto error;
-+
-+ frame->datasize = buf[7] + (buf[6] << 7) + (buf[5] << 14) + (buf[4] << 21);
-+
-+// A minimum size must be present!
-+ if ( frame->datasize <= 0 )
-+ goto error;
-+
-+// The two following frame header flags have the 5 LSBs not set.
-+ if ( (buf[8] & 31) != 0
-+ || (buf[9] & 31) != 0 )
-+ goto error;
-+
-+// now, put the flags in the struct.
-+ frame->tagalter = (buf[8] & 128) >> 7;
-+ frame->filealter = (buf[8] & 64) >> 6;
-+ frame->readonly = (buf[8] & 32) >> 5;
-+
-+ frame->compression = (buf[9] & 128) >> 7;
-+ frame->encryption = (buf[8] & 64) >> 6;
-+ frame->grouping = (buf[8] & 32) >> 5;
-+
-+// ok, we are done with the frame header, so now we read the frame data.
-+ frame->data = calloc (1, frame->datasize + 1);
-+ if( fread (frame->data, 1, frame->datasize, mp3file) < frame->datasize )
-+ goto error;
-+
-+ numframes++;
-+ totalframesize += 10 + frame->datasize;
-+
-+// we append it to a glist, which is appended to the v2 struct.
-+ v2->frames = dll_append (v2->frames, frame);
-+ }
-+
-+// if we have no extheader, that means, we don't know how much padding we have!
-+// thus, i calculate it here.
-+ if ( !v2->has_extheader )
-+ v2->padding_size = v2->tag_size - totalframesize;
-+
-+// A minimum of one frame is mandatory.
-+ if( numframes > 0 )
-+ return (TRUE);
-+
-+error:
-+// cleanups in case of an error.
-+ if( frame && frame->data )
-+ free (frame->data);
-+ if( frame )
-+ free (frame);
-+ return (FALSE);
-+}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+/*
-+ * Reads all tag information of a valid ID3V2.3 file.
-+ * When successful, the info is stored in the tag struct.
-+ * Returns:
-+ * 0 = success
-+ * 1 = Cannot open file.
-+ * 2 = No header or wrong version.
-+ * 3 = broken extheader.
-+ * 4 = broken frames.
-+ */
-+static int
-+get_id3v2tag_raw (id3v2Tag *v2, char *filename)
-+{
-+ FILE *mp3file = NULL;
-+ int error = 0;
-+
-+// open file
-+ error = 1;
-+ mp3file = fopen (filename, "rb");
-+ if (!mp3file)
-+ goto done;
-+
-+// check/get header
-+ error = 2;
-+ if( !check_header (mp3file, v2) )
-+ goto done;
-+
-+// check/get extheader
-+ error = 3;
-+ if( v2->has_extheader
-+ && !check_extheader (mp3file, v2) )
-+ goto done;
-+
-+// get the content frames
-+ error = 4;
-+ if( !read_frames (mp3file, v2) )
-+ goto done;
-+
-+ error = 0;
-+done:
-+ fclose (mp3file);
-+ return (error);
-+}
-+
-+
-+
-+
-+
-+/*
-+ * Find one frames data and give back its data in the correct format.
-+ * Returns TRUE on success, otherwise FALSE;
-+ */
-+static short int
-+frame_find (id3v2Tag *v2, char *name, char *value)
-+{
-+ DLL *curframe = NULL;
-+ id3v2Frame *frame = NULL;
-+
-+ // we parse through the whole list of frames, giving back the correct frame value.
-+ curframe = v2->frames;
-+ while ( curframe )
-+ {
-+ frame = (id3v2Frame *)curframe->data;
-+
-+ // Just to be sure...
-+ if( frame->datasize <= 0 )
-+ goto nextframe;
-+
-+ // Matches the users request? Otherwise try the next frame.
-+ if( memcmp (frame->id, name, 4) != 0 )
-+ goto nextframe;
-+
-+ // These types don't need much change, just give the whole data back to the user according to the encoding.
-+ // The first byte is the encoding.
-+ // TPE1: Artist
-+ // TIT2: Song Title
-+ // TALB: Album Title
-+ // TYER: Year
-+ // TRCK: Track
-+ // TCON: Genre
-+ // COMM: Comment
-+ // TCOM: Composer
-+ // TOPE: TOPE Original artist(s)/performer(s)
-+ // TENC: Encoded by
-+ if ( memcmp (frame->id, "TPE1", 4) == 0
-+ || memcmp (frame->id, "TIT2", 4) == 0
-+ || memcmp (frame->id, "TALB", 4) == 0
-+ || memcmp (frame->id, "TYER", 4) == 0
-+ || memcmp (frame->id, "TRCK", 4) == 0
-+ || memcmp (frame->id, "TCON", 4) == 0
-+ || memcmp (frame->id, "TCOM", 4) == 0
-+ || memcmp (frame->id, "TOPE", 4) == 0
-+ || memcmp (frame->id, "TENC", 4) == 0)
-+ //|| memcmp (frame->id, "WXXX", 4) == 0)
-+ {
-+ if ( *frame->data == 0 )
-+ memcpy(value, frame->data + 1, frame->datasize - 1);
-+ if ( *frame->data == 1 )
-+ {
-+ char nulltermvalue[frame->datasize];
-+ char *isovalue = NULL;
-+
-+ // the tag is not null terminated, so i have to create a null terminated string first.
-+ memset (nulltermvalue, 0, frame->datasize);
-+ memcpy (nulltermvalue, frame->data + 1, frame->datasize - 1);
-+
-+ // Convert from UTF to ISO and copy to the users variable.
-+ isovalue = convert_from_utf8 (nulltermvalue);
-+ strncpy (value, isovalue, sizeof(value) - 1);
-+ free (isovalue);
-+ }
-+
-+ // change linefeeds to a single "return" key.
-+ crlf2cr (value);
-+ return (TRUE);
-+ }
-+ if ( memcmp (frame->id, "WCOM", 4) == 0
-+ || memcmp (frame->id, "WCOP", 4) == 0
-+ || memcmp (frame->id, "WOAF", 4) == 0
-+ || memcmp (frame->id, "WOAR", 4) == 0
-+ || memcmp (frame->id, "WOAS", 4) == 0
-+ || memcmp (frame->id, "WPAY", 4) == 0
-+ || memcmp (frame->id, "WPUB", 4) == 0)
-+ {
-+ memcpy(value, frame->data, frame->datasize - 1);
-+
-+ // change linefeeds to a single "return" key.
-+ crlf2cr (value);
-+ return (TRUE);
-+ }
-+
-+ // The comment requires special handling.
-+ // Its data has: One byte "encoding" (0 = ISO-8859-1, 1 = UNICODE)
-+ // followed by the language (three bytes, e.g. "eng"),
-+ // followed by a short description,
-+ // then a NULL,
-+ // and the full description
-+ // For now, i simply drop the short description
-+ if( memcmp(frame->id, "COMM", 4) == 0 )
-+ {
-+ // check for the right format. (minsize 5, must contain a "\0" after the language)
-+ if ( frame->datasize < 5 )
-+ goto nextframe;
-+ if ( !memchr (frame->data + 4, '\0', frame->datasize - 4) )
-+ goto nextframe;
-+
-+ // now, give the data back to the user, according to the encoding.
-+ if ( *frame->data == 0 )
-+ memcpy (value, frame->data + 5, frame->datasize - 5);
-+ if ( *frame->data == 1 )
-+ {
-+ char nulltermvalue[frame->datasize];
-+ char *isovalue = NULL;
-+
-+ // the tag is not null terminated, so i have to create a null terminated string first.
-+ memset (nulltermvalue, 0, frame->datasize);
-+ memcpy (nulltermvalue, frame->data + 5, frame->datasize - 5);
-+
-+ // Convert from UTF to ISO and copy to the users variable.
-+ isovalue = convert_from_utf8 (nulltermvalue);
-+ strncpy (value, isovalue, sizeof(value) - 1);
-+ free (isovalue);
-+ }
-+
-+ // change linefeeds to a single "return" key.
-+ crlf2cr (value);
-+ return TRUE;
-+ }
-+
-+nextframe:
-+ curframe = curframe->next;
-+ }
-+
-+ return FALSE;
-+}
-+
-+
-+
-+
-+/*
-+ * Remove one frame out of the id3v2Tag struct
-+ * Returns TRUE on success, otherwise FALSE;
-+ */
-+static short int
-+frame_remove (id3v2Tag *v2, char *name)
-+{
-+ id3v2Frame *frame = NULL;
-+ DLL *curframe = NULL;
-+ DLL *tempframe = NULL;
-+
-+// Parse through the list of frames.
-+ curframe = v2->frames;
-+ while ( curframe )
-+ {
-+ frame = (id3v2Frame *)curframe->data;
-+ tempframe = curframe;
-+ curframe = curframe->next;
-+
-+ if ( memcmp (frame->id, name, 4) == 0 )
-+ {
-+// we have found the item! removing will NOT shrink the tag, but increase the padding.
-+ v2->padding_size += (frame->datasize + 10);
-+// and free memory.
-+ v2->frames = dll_remove (v2->frames, tempframe->data);
-+ free (frame->data);
-+ free (frame);
-+
-+ return TRUE;
-+ }
-+ }
-+
-+ return FALSE;
-+}
-+
-+
-+
-+/*
-+ * Add a frame to the framelist. If the frame name is already in the list, it will be replaced.
-+ * Returns:
-+ * TRUE: The tag size HAS BEEN increased.
-+ * FALSE: The tag size has NOT been increased.
-+ */
-+static short int
-+frame_set (id3v2Tag *v2, char *name, char *value)
-+{
-+ id3v2Frame *frame = NULL;
-+ short int sizechange = FALSE;
-+
-+// prevent the user to send CR/LF, which is forbidden.
-+ cr2crlf (value);
-+// eventually remove an existing item!
-+ frame_remove (v2, name);
-+
-+// alloc space for the new frame.
-+ frame = malloc (sizeof(id3v2Frame));
-+
-+ memcpy (frame->id, name, 4);
-+ frame->datasize = strlen (value);
-+ frame->tagalter = 0;
-+ frame->filealter = 0;
-+ frame->readonly = 0;
-+ frame->compression = 0;
-+ frame->encryption = 0;
-+ frame->grouping = 0;
-+
-+// The comment requires special handling. If you need to know why, look at the documentation
-+// of the "frame_find" function above.
-+ if( memcmp (frame->id, "COMM", 4) == 0 )
-+ {
-+ char fullvalue[frame->datasize + 6];
-+
-+ sprintf(fullvalue, "%ceng%c%s", 0, 0, value);
-+
-+ frame->datasize += 5;
-+ frame->data = malloc (frame->datasize);
-+ memcpy (frame->data, fullvalue, frame->datasize);
-+ }
-+ else if ((memcmp(frame->id, "WCOM", 4) == 0)
-+ || memcmp (frame->id, "WCOP", 4) == 0
-+ || memcmp (frame->id, "WOAF", 4) == 0
-+ || memcmp (frame->id, "WOAR", 4) == 0
-+ || memcmp (frame->id, "WOAS", 4) == 0
-+ || memcmp (frame->id, "WPAY", 4) == 0
-+ || memcmp (frame->id, "WPUB", 4) == 0)
-+ {
-+ frame->data = malloc (frame->datasize);
-+ memcpy (frame->data, value, frame->datasize);
-+ }
-+ else
-+ {
-+ char fullvalue[frame->datasize + 2];
-+
-+ // Put encoding type just before the value
-+ sprintf (fullvalue, "%c%s", 0, value);
-+
-+ frame->datasize += 1;
-+ frame->data = malloc (frame->datasize);
-+ memcpy (frame->data, fullvalue, frame->datasize);
-+ }
-+
-+// Ok. This decreases the available padding. If we have no padding left, we must increase the padding (and thus, the tag).
-+ if( v2->padding_size - (frame->datasize + 10) <= 0 )
-+ {
-+// add: framesize + frameheadersize + padding.
-+ v2->padding_size += frame->datasize + 10 + 1024;
-+ v2->tag_size += frame->datasize + 10 + 1024;
-+
-+ sizechange = TRUE;
-+ }
-+
-+// In every case, we must subtract the new allocated space from the padding.
-+ v2->padding_size -= frame->datasize + 10;
-+
-+ v2->frames = dll_append (v2->frames, frame);
-+
-+ return sizechange;
-+}
-+
-+
-+
-+/*
-+ * Create raw header.
-+ * Returns:
-+ * TRUE: successful.
-+ * FALSE: unsuccessful.
-+ */
-+static int
-+create_header_raw (char *raw, id3v2Tag *v2)
-+{
-+// now we are going to write the tags raw data into the raw string
-+ memset (raw, 0, v2->tag_size + 10);
-+// ID3 identifier bytes
-+ memcpy (raw, "ID3", 3);
-+ raw += 3;
-+// major version byte
-+ *raw++ = 3;
-+// minor version byte
-+ *raw++ = 0;
-+// Flags byte
-+ *raw++ = ((v2->unsync & 1) << 7)
-+ | ((v2->has_extheader & 1) << 6)
-+ | ((v2->is_experimental & 1) << 5);
-+// Tag size. It must be syncsafe!
-+ *raw++ = ((v2->tag_size & 0x800000) >> 23) | (((v2->tag_size & 0x7f000000) >> 24) << 1);
-+ *raw++ = ((v2->tag_size & 0x8000) >> 15) | (((v2->tag_size & 0x7f0000) >> 16) << 1);
-+ *raw++ = ((v2->tag_size & 0x80) >> 7) | (((v2->tag_size & 0x7f00) >> 8) << 1);
-+ *raw++ = (v2->tag_size & 0x7f);
-+
-+ return TRUE;
-+}
-+
-+
-+
-+
-+/*
-+ * Generates the frames. btw.: ID3 sucks!
-+ * Returns: TRUE if succesful, otherwise FALSE.
-+ */
-+static short int
-+create_frames_raw (char *raw, id3v2Tag *v2)
-+{
-+ id3v2Frame *frame = NULL;
-+ DLL *curframe = NULL;
-+
-+// if we have no frames, just quit.
-+ if ( v2->frames == NULL )
-+ return FALSE;
-+
-+// the header and extheader have already been written.
-+ raw += 10;
-+ if ( v2->has_extheader )
-+ raw += 4 + v2->extheader_size;
-+
-+ curframe = v2->frames;
-+ while ( curframe )
-+ {
-+ frame = (id3v2Frame *)curframe->data;
-+
-+// secure is secure
-+ if ( frame->datasize <= 0 )
-+ goto nextframe;
-+
-+// add the frame id
-+ memcpy(raw, frame->id, 4);
-+ raw += 4;
-+// add the frame size (syncsafe)
-+ *raw++ = ((frame->datasize & 0x800000) >> 23) | (((frame->datasize & 0x7f000000) >> 24) << 1);
-+ *raw++ = ((frame->datasize & 0x8000) >> 15) | (((frame->datasize & 0x7f0000) >> 16) << 1);
-+ *raw++ = ((frame->datasize & 0x80) >> 7) | (((frame->datasize & 0x7f00) >> 8) << 1);
-+ *raw++ = (frame->datasize & 0x7f);
-+
-+// The two flagbytes
-+ *raw++ = ((frame->tagalter & 1) << 7)
-+ | ((frame->filealter & 1) << 6)
-+ | ((frame->readonly & 1) << 5);
-+
-+ *raw++ = ((frame->compression & 1) << 7)
-+ | ((frame->encryption & 1) << 6)
-+ | ((frame->grouping & 1) << 5);
-+
-+// now the frame data.
-+ memcpy(raw, frame->data, frame->datasize);
-+ raw += frame->datasize;
-+
-+nextframe:
-+ curframe = curframe->next;
-+ }
-+
-+ return TRUE;
-+}
-+
-+/***************************************************************************************
-+ * END OF STATICS
-+ ***************************************************************************************/
-+
-+
-+
-+
-+
-+
-+
-+/*
-+ * Purpose: Reads the ID3 tag from a file.
-+ * Parameters: tag - The structure to store the tag in, filename - The name of the file to operate on.
-+ * Returns:
-+ * 0 if successful,
-+ * 1 if an error occured when opening the file
-+ * 2 if error while reading tag.
-+ * 3 if no TAG found.
-+ */
-+int
-+get_id3v2_tag (id3Tag *tag, char *filename)
-+{
-+ id3v2Tag *v2 = calloc (1, sizeof(id3v2Tag));
-+ DLL *curframe = NULL;
-+ int error = 0;
-+
-+// Read the tag.
-+ error = get_id3v2tag_raw (v2, filename);
-+
-+// Init the users tag
-+ memset (tag, 0, sizeof (id3Tag));
-+
-+ if( error == 0 )
-+ {
-+// if we have a valid tag we copy the raw data to the users struct
-+ tag->size = v2->tag_size;
-+
-+ frame_find (v2, "TPE1", tag->artist);
-+ frame_find (v2, "TIT2", tag->title);
-+ frame_find (v2, "TALB", tag->album);
-+ frame_find (v2, "TYER", tag->year);
-+ frame_find (v2, "COMM", tag->comment);
-+ frame_find (v2, "TRCK", tag->track);
-+ frame_find (v2, "TCON", tag->genre);
-+ frame_find (v2, "TCOM", tag->composer); // Composer
-+ frame_find (v2, "TOPE", tag->orig_artist); // Original artist(s)/performer(s)
-+ frame_find (v2, "WCOM", tag->url); // URL
-+ frame_find (v2, "TENC", tag->enc_by); // Encoded by
-+ }
-+
-+// Free all the stuff
-+ if (v2->frames)
-+ {
-+ id3v2Frame *frame = NULL;
-+
-+ curframe = v2->frames;
-+ while ( curframe )
-+ {
-+ frame = (id3v2Frame *)curframe->data;
-+
-+ free (frame->data);
-+ free (frame);
-+
-+ curframe = curframe->next;
-+ }
-+ v2->frames = dll_free (v2->frames);
-+ }
-+
-+ free (v2);
-+ return (error);
-+}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+/*
-+ * Purpose: Clear the ID3 tag of a file.
-+ * Parameters: a filename.
-+ * Returns:
-+ * 0 if successful,
-+ * 1 if an error occured when opening the file
-+ * 2 if an error while reading/writing the tag.
-+ */
-+int
-+del_id3v2_tag (char *filename)
-+{
-+ id3v2Tag *v2 = calloc (1, sizeof(id3v2Tag));
-+ long file_len;
-+ FILE *file;
-+ void *ptr;
-+
-+// check if an valid old id3v2 tag is present
-+// In these two error-cases we don't know how big the tag is.
-+ if( get_id3v2tag_raw (v2, filename) == 1
-+ || get_id3v2tag_raw (v2, filename) == 2 )
-+ return(0);
-+
-+ ptr = malloc (4096);
-+
-+// open file read/write
-+ file = fopen (filename, "r+b");
-+ if (!file)
-+ return (1);
-+
-+ fseek (file, 0, SEEK_END);
-+ file_len = ftell (file);
-+ if ( file_len < 11
-+ || v2->tag_size < 11 )
-+ return (2);
-+
-+// set anything but the header in tag to zero. I'll not really remove the tag,
-+// because this would be much slower and if we write a new tag, this would mean weŽd have to
-+// rewrite the complete tag.
-+/*
-+ fseek (file, 10, SEEK_SET);
-+ for (read = 0; read < v2->tag_size - 10; read++)
-+ fputc (0, file);
-+
-+*/
-+ {
-+ FILE *file = NULL;
-+ FILE *tempfile = NULL;
-+ char *tempfilename = NULL;
-+ int read = 0;
-+ char buf[4096];
-+ int error = 0;
-+
-+ // Open a tempfile
-+ error = 2;
-+ tempfilename = malloc (strlen (filename) + 11);
-+ sprintf (tempfilename, "%s%s", filename, ".tempXXXXX");
-+ if( !(tempfile = fopen(tempfilename, "wb")) )
-+ {
-+ remove (tempfilename);
-+ free (tempfilename);
-+ goto done;
-+ }
-+
-+ // Write the tag to the tempfile.
-+
-+ // Open the mp3file.
-+ error = 4;
-+ if( !(file = fopen(filename, "r+b")) )
-+ {
-+ fclose (file);
-+ remove (tempfilename);
-+ free (tempfilename);
-+ goto done;
-+ }
-+ // skip the old tag (if one existed)
-+ fseek (file, v2->tag_size + 10, SEEK_SET);
-+
-+ // copy the rest of the file to the tempfile.
-+ while ( !feof(file) )
-+ {
-+ error = 5;
-+ read = fread (buf, 1, 4096, file);
-+ if( fwrite (buf, 1, read, tempfile) != read
-+ && !feof (file) )
-+ {
-+ remove (tempfilename);
-+ free (tempfilename);
-+ fflush (tempfile);
-+ fclose (tempfile);
-+ fflush (file);
-+ fclose (file);
-+ goto done;
-+ }
-+ }
-+
-+ fflush (file);
-+ fclose (file);
-+ fflush (tempfile);
-+ fclose (tempfile);
-+
-+ // rename the tempfile, so it is the mp3file.
-+ rename (tempfilename, filename);
-+ free (tempfilename);
-+ }
-+
-+done:
-+ if (v2) free (v2);
-+ if (ptr) free (ptr);
-+
-+ return(0);
-+}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+int
-+set_id3v2_tag (id3Tag *tag, char *filename)
-+{
-+ id3v2Tag *v2 = malloc (sizeof(id3v2Tag));
-+ id3v2Frame *frame = NULL;
-+ unsigned char *rawdata = NULL;
-+ DLL *curframe = NULL;
-+ int oldsize = 0;
-+ char track[3];
-+ int error = 0;
-+
-+// Try to get the content of an old tag
-+ error = 1;
-+ memset (v2, 0, sizeof(id3v2Tag));
-+ get_id3v2tag_raw (v2, filename);
-+
-+ oldsize = v2->tag_size;
-+
-+// If the old tag had an extheader, I'll add its size to my tag, because i don't plan to add it again.
-+ if ( v2->has_extheader )
-+ {
-+ v2->padding_size += v2->extheader_size;
-+ v2->has_extheader = FALSE;
-+ v2->extheader_size = 0;
-+ }
-+
-+// first of all I'll generate a valid id3v2 tag struct out of the tag struct we got by the user.
-+// Set the flags...
-+ v2->unsync = FALSE;
-+ v2->is_experimental = FALSE;
-+ v2->crc_data_present = FALSE;
-+
-+// Set the contentframes
-+ frame_set (v2, "TIT2", tag->title);
-+ frame_set (v2, "TPE1", tag->artist);
-+ frame_set (v2, "TALB", tag->album);
-+ frame_set (v2, "TYER", tag->year);
-+ frame_set (v2, "COMM", tag->comment);
-+ frame_set (v2, "TCON", tag->genre);
-+ frame_set (v2, "TCOM", tag->composer); // Composer
-+ frame_set (v2, "TOPE", tag->orig_artist); // TOPE Original artist(s)/performer(s)
-+ frame_set (v2, "WCOM", tag->url); // URL
-+ frame_set (v2, "TENC", tag->enc_by); // Encoded by
-+ if ( atoi (tag->track) < 10 )
-+ snprintf (track, 3, "0%i", atoi(tag->track));
-+ else
-+ snprintf (track, 3, "%i", atoi(tag->track));
-+ frame_set (v2, "TRCK", track);
-+
-+// Create a header in the raw data string
-+ rawdata = calloc (1, v2->tag_size + 10);
-+ create_header_raw (rawdata, v2);
-+
-+// Create frames raw data.
-+ create_frames_raw (rawdata, v2);
-+
-+// is the new tag bigger than the old one? Then we'll have to completely rewrite the file...
-+ if ( v2->tag_size > oldsize )
-+ {
-+ FILE *file = NULL;
-+ FILE *tempfile = NULL;
-+ char *tempfilename = NULL;
-+ int read = 0;
-+ char buf[4096];
-+
-+// Open a tempfile
-+ error = 2;
-+ tempfilename = malloc (strlen (filename) + 11);
-+ sprintf (tempfilename, "%s%s", filename, ".tempXXXXX");
-+ if( !(tempfile = fopen(tempfilename, "wb")) )
-+ {
-+ remove (tempfilename);
-+ free (tempfilename);
-+ goto done;
-+ }
-+
-+// Write the tag to the tempfile.
-+ error = 3;
-+ fseek (tempfile, 0, SEEK_SET);
-+ if( fwrite (rawdata, 1, v2->tag_size + 10, tempfile) < v2->tag_size )
-+ {
-+ fclose (tempfile);
-+ remove (tempfilename);
-+ free (tempfilename);
-+ goto done;
-+ }
-+
-+// Open the mp3file.
-+ error = 4;
-+ if( !(file = fopen(filename, "r+b")) )
-+ {
-+ fclose (file);
-+ remove (tempfilename);
-+ free (tempfilename);
-+ goto done;
-+ }
-+// skip the old tag (if one existed)
-+ fseek (file, oldsize? oldsize + 10 : oldsize, SEEK_SET);
-+
-+// copy the rest of the file to the tempfile.
-+ while ( !feof(file) )
-+ {
-+ error = 5;
-+ read = fread (buf, 1, 4096, file);
-+ if( fwrite (buf, 1, read, tempfile) != read
-+ && !feof (file) )
-+ {
-+ remove (tempfilename);
-+ free (tempfilename);
-+ fflush (tempfile);
-+ fclose (tempfile);
-+ fflush (file);
-+ fclose (file);
-+ goto done;
-+ }
-+ }
-+
-+ fflush (file);
-+ fclose (file);
-+ fflush (tempfile);
-+ fclose (tempfile);
-+
-+// rename the tempfile, so it is the mp3file.
-+ rename (tempfilename, filename);
-+ free (tempfilename);
-+ }
-+ else
-+ {
-+ FILE *file = NULL;
-+
-+// If the old tag was bigger than the new one, we can simply overwrite it!
-+// open.
-+ error = 10;
-+ if( !(file = fopen(filename, "r+b")) )
-+ goto done;
-+
-+// write.
-+ error = 11;
-+ fseek (file, 0, SEEK_SET);
-+ if( fwrite (rawdata, 1, v2->tag_size + 10, file) < v2->tag_size )
-+ {
-+ fflush (file);
-+ fclose (file);
-+ goto done;
-+ }
-+
-+ fflush (file);
-+ fclose (file);
-+ }
-+
-+ error = 0;
-+
-+done:
-+// Free all the stuff
-+ curframe = v2->frames;
-+ while ( curframe )
-+ {
-+ frame = (id3v2Frame *)curframe->data;
-+
-+ free (frame->data);
-+ free (frame);
-+
-+ curframe = curframe->next;
-+ }
-+ dll_free (v2->frames);
-+
-+ if ( rawdata != NULL )
-+ free (rawdata);
-+ free (v2);
-+ return (error);
-+}
-diff -Naur xmms-1.2.9-orig/Input/mpg123/mpg123.c xmms-1.2.9/Input/mpg123/mpg123.c
---- xmms-1.2.9-orig/Input/mpg123/mpg123.c Thu Jan 29 06:43:24 2004
-+++ xmms-1.2.9/Input/mpg123/mpg123.c Thu Jan 29 05:18:54 2004
-@@ -607,8 +607,13 @@
- { \
- id3frm = id3_get_frame( id3d, _tid, 1 ); \
- if (id3frm) { \
-- txt = _tid == ID3_TCON ? id3_get_content(id3frm) \
-- : id3_get_text(id3frm); \
-+ if (_tid == ID3_COMM) \
-+ txt = id3_get_comm(id3frm); \
-+ else if (id3frm->fr_desc->fd_idstr[0] == 'W') \
-+ txt = id3_get_url(id3frm); \
-+ else \
-+ txt = _tid == ID3_TCON ? id3_get_content(id3frm) \
-+ : id3_get_text(id3frm); \
- if(txt) \
- { \
- tlen = strlen(txt); \
-@@ -644,6 +649,10 @@
- ID3_SET_NUM (ID3_TRCK, track_number);
- ID3_SET (ID3_COMM, comment);
- ID3_SET (ID3_TCON, genre);
-+ ID3_SET (ID3_TCOM, composer);
-+ ID3_SET (ID3_TOPE, orig_artist);
-+ ID3_SET (ID3_WCOM, url);
-+ ID3_SET (ID3_TENC, encoded_by);
- }
-
- /*
-diff -Naur xmms-1.2.9-orig/Input/mpg123/mpg123.h xmms-1.2.9/Input/mpg123/mpg123.h
---- xmms-1.2.9-orig/Input/mpg123/mpg123.h Thu Jan 29 06:43:24 2004
-+++ xmms-1.2.9/Input/mpg123/mpg123.h Thu Jan 29 05:20:31 2004
-@@ -78,6 +78,10 @@
- char genre[256];
- int year;
- int track_number;
-+ char composer[1024];
-+ char orig_artist[1024];
-+ char url[1024];
-+ char encoded_by[1024];
- };
-
- typedef struct
diff --git a/abs/extra/xmms/xmms-1.2.10-fonts.patch b/abs/extra/xmms/xmms-1.2.10-fonts.patch
new file mode 100644
index 0000000..87cd9a8
--- /dev/null
+++ b/abs/extra/xmms/xmms-1.2.10-fonts.patch
@@ -0,0 +1,24 @@
+--- xmms-1.2.10/xmms/main.c.fonts 2004-08-10 22:16:06.000000000 +0200
++++ xmms-1.2.10/xmms/main.c 2004-08-12 11:49:17.905598843 +0200
+@@ -351,7 +351,8 @@
+ cfg.no_playlist_advance = FALSE;
+ cfg.smooth_title_scroll = TRUE;
+ cfg.random_skin_on_play = FALSE;
+- cfg.mainwin_use_xfont = FALSE;
++ cfg.mainwin_use_xfont = TRUE;
++ cfg.use_fontsets = TRUE;
+ cfg.use_pl_metadata = TRUE;
+
+ cfg.playlist_x = 295;
+@@ -499,9 +500,9 @@
+ cfg.mainwin_font = NULL;
+ }
+ if (cfg.playlist_font == NULL)
+- cfg.playlist_font = g_strdup("-adobe-helvetica-bold-r-*-*-10-*");
++ cfg.playlist_font = g_strdup("-*-helvetica-bold-r-*-*-10-*,*");
+ if (cfg.mainwin_font == NULL)
+- cfg.mainwin_font = g_strdup("-adobe-helvetica-medium-r-*-*-8-*");
++ cfg.mainwin_font = g_strdup("-*-helvetica-medium-r-*-*-8-*,*");
+ if (cfg.gentitle_format == NULL)
+ cfg.gentitle_format = g_strdup("%p - %t");
+ if (cfg.outputplugin == NULL)
diff --git a/abs/extra/xmms/xmms-1.2.10-recode-id3.patch b/abs/extra/xmms/xmms-1.2.10-recode-id3.patch
new file mode 100644
index 0000000..6bd4ecf
--- /dev/null
+++ b/abs/extra/xmms/xmms-1.2.10-recode-id3.patch
@@ -0,0 +1,11 @@
+--- xmms/playlist.c.orig 2005-03-05 17:26:11.685992552 +0200
++++ xmms/playlist.c 2005-03-05 17:28:01.524294592 +0200
+@@ -1341,7 +1341,7 @@
+
+ filename = g_strdup(entry->filename);
+
+- if (entry->title == NULL && entry->length == -1)
++ if (entry->title == NULL)
+ {
+ if (playlist_get_info_entry(entry)&&(entry->title)) {
+ title = xmms_charset_recode_id3(entry->title,0,NULL);
diff --git a/abs/extra/xmms/xmms-1.2.11-3dse.patch b/abs/extra/xmms/xmms-1.2.11-3dse.patch
new file mode 100644
index 0000000..099bf23
--- /dev/null
+++ b/abs/extra/xmms/xmms-1.2.11-3dse.patch
@@ -0,0 +1,503 @@
+--- xmms-1.2.11/Output/OSS/OSS.h.3dse 2003-06-11 20:44:17.000000000 +0200
++++ xmms-1.2.11/Output/OSS/OSS.h 2007-11-18 20:51:57.000000000 +0100
+@@ -48,6 +48,11 @@
+ # define IS_BIG_ENDIAN FALSE
+ #endif
+
++#define AWE_3DSE 0x90
++#define MIXER_BASE_DEFAULT 0x220
++#define MIXER_REG_OFFSET 4
++#define MIXER_DATA_OFFSET 5
++
+ extern OutputPlugin op;
+
+ typedef struct
+@@ -59,6 +64,8 @@ typedef struct
+ gboolean use_master;
+ gboolean use_alt_audio_device, use_alt_mixer_device;
+ gchar *alt_audio_device, *alt_mixer_device;
++ gint stereo;
++ gboolean hardware_access;
+ }
+ OSSConfig;
+
+@@ -82,6 +89,12 @@ int oss_get_output_time(void);
+ int oss_get_written_time(void);
+ void oss_set_audio_params(void);
+
++int oss_set_3dse(int stat);
++int oss_get_3dse(void);
++void oss_hw_set_3dse(int stat);
++int oss_hw_get_3dse(void);
++int initHardwareAccess ();
++
+ void oss_free_convert_buffer(void);
+ int (*oss_get_convert_func(int output, int input))(void **, int);
+ int (*oss_get_stereo_convert_func(int output, int input))(void **, int, int);
+--- xmms-1.2.11/Output/OSS/configure.c.3dse 2005-05-15 02:01:20.000000000 +0200
++++ xmms-1.2.11/Output/OSS/configure.c 2007-11-18 20:51:57.000000000 +0100
+@@ -24,6 +24,10 @@ static GtkWidget *mixer_usemaster_check,
+ static GtkWidget *adevice_use_alt_check, *audio_alt_device_entry;
+ static GtkWidget *mdevice_use_alt_check, *mixer_alt_device_entry;
+ static gint audio_device, mixer_device;
++static GtkWidget *stereo_check_button, *stereo_frame, *stereo_box;
++static GtkWidget *stereo_label, *stereo_align_button, *stereo_align_label;
++static GtkWidget *save3dse_check_button, *stereo_table, *hw_check_button;
++
+
+ static void configure_win_ok_cb(GtkWidget * w, gpointer data)
+ {
+@@ -69,6 +73,8 @@ static void configure_win_ok_cb(GtkWidge
+ xmms_cfg_write_string(cfgfile, "OSS", "alt_audio_device", oss_cfg.alt_audio_device);
+ xmms_cfg_write_boolean(cfgfile, "OSS", "use_alt_mixer_device", oss_cfg.use_alt_mixer_device);
+ xmms_cfg_write_string(cfgfile, "OSS", "alt_mixer_device", oss_cfg.alt_mixer_device);
++ xmms_cfg_write_int(cfgfile, "OSS", "stereo", oss_cfg.stereo);
++ xmms_cfg_write_boolean(cfgfile, "OSS", "hardware", oss_cfg.hardware_access);
+ xmms_cfg_write_default_file(cfgfile);
+ xmms_cfg_free(cfgfile);
+
+@@ -85,6 +91,98 @@ static void configure_win_mixer_dev_cb(G
+ mixer_device = device;
+ }
+
++static void stereo_check_button_cb(GtkWidget * widget, gpointer data)
++{
++ if (GTK_TOGGLE_BUTTON(widget)->active)
++ {
++ if (oss_cfg.stereo != -1)
++ oss_cfg.stereo = 1;
++ if (oss_cfg.hardware_access)
++ oss_hw_set_3dse(1);
++ else
++ oss_set_3dse(1);
++ }
++ else
++ {
++ if (oss_cfg.stereo != -1)
++ oss_cfg.stereo = 0;
++ if (oss_cfg.hardware_access)
++ oss_hw_set_3dse(0);
++ else
++ oss_set_3dse(0);
++ }
++}
++
++static void save3dse_check_button_cb(GtkWidget * widget, gpointer data)
++{
++ if (GTK_TOGGLE_BUTTON(widget)->active)
++ {
++ if (GTK_TOGGLE_BUTTON(data)->active)
++ oss_cfg.stereo = 1;
++ else
++ oss_cfg.stereo = 0;
++ }
++ else
++ {
++ oss_cfg.stereo = -1;
++ }
++}
++
++void warning_dialog(void)
++{
++ GtkWidget *dialog_window, *button, *label;
++ dialog_window = gtk_dialog_new();
++ gtk_window_set_title(GTK_WINDOW(dialog_window),
++ "WARNING: DIRECT ACCESS");
++ gtk_window_set_policy(GTK_WINDOW(dialog_window), FALSE, FALSE, TRUE);
++ gtk_window_set_position(GTK_WINDOW(dialog_window), GTK_WIN_POS_MOUSE);
++ button = gtk_button_new_with_label("Dismiss");
++ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
++ GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer)dialog_window);
++ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area),
++ button, TRUE, FALSE, 0);
++ gtk_widget_show(button);
++ label = gtk_label_new(
++ "Direct hardware access can cause damage to your sound card.\n"
++ "Only use this option when you are using OSS drivers that\n"
++ "doesn't support the SND_MIXER_3DSE ioctl.\n"
++ "USE THIS OPTION AT YOUR OWN RISK !!!\n"
++ "You can use the environment variable \"BLASTER\" to manual\n"
++ "set the port of the mixer of your sound card. Only use this\n"
++ "option when you really know the mixer address. The default\n"
++ "value is 0x220. Example:\n"
++ " BLASTER=M230 ; export BLASTER\n"
++ "SETTING THE WRONG BLASTER ENVIRONMENT CAN\n"
++ "CAUSE YOUR SYSTEM TO CRASH AND CAN CAUSE\n"
++ "PERMANENT DAMAGE !!!");
++ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
++ gtk_misc_set_padding(GTK_MISC(label), 10, 10);
++ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox),
++ label, TRUE, TRUE, 0);
++ gtk_widget_show(label);
++ gtk_grab_add(dialog_window);
++ GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
++ gtk_widget_grab_default(button);
++ gtk_widget_show(dialog_window);
++}
++
++static void hw_check_button_cb(GtkWidget * widget, gpointer data)
++{
++ if (GTK_TOGGLE_BUTTON(widget)->active)
++ {
++ if (oss_cfg.hardware_access == 0)
++ warning_dialog();
++ oss_cfg.hardware_access = 1;
++ initHardwareAccess ();
++ gtk_widget_set_sensitive(stereo_check_button, TRUE);
++ gtk_widget_set_sensitive(save3dse_check_button, TRUE);
++ }
++ else
++ {
++ oss_cfg.hardware_access = 0;
++ }
++}
++
+ static void audio_device_toggled(GtkToggleButton * widget, gpointer data)
+ {
+ gboolean use_alt_audio_device = gtk_toggle_button_get_active(widget);
+@@ -148,10 +246,38 @@ static void scan_devices(gchar * type, G
+ }
+ else
+ {
+- item = gtk_menu_item_new_with_label(_("Default"));
+- gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0);
+- gtk_widget_show(item);
+- gtk_menu_append(GTK_MENU(menu), item);
++#ifdef SOUND_MIXER_INFO
++ int i, fd;
++ gchar *dev_name;
++ mixer_info info;
++ for (i = 0; i < 10; i++) {
++ if (i)
++ dev_name = g_strdup_printf ("/dev/mixer%d", i);
++ else
++ dev_name = g_strdup_printf ("/dev/mixer");
++ if ((fd = open (dev_name, O_RDONLY)) != -1) {
++ if (ioctl (fd, SOUND_MIXER_INFO, &info) != -1) {
++ if (!index)
++ temp = g_strdup_printf ("Default (%s)", info.name);
++ else
++ temp = g_strdup_printf ("%s", info.name);
++ item = gtk_menu_item_new_with_label (temp);
++ g_free (temp);
++ gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) index++);
++ gtk_widget_show(item);
++ gtk_menu_append(GTK_MENU(menu), item);
++ }
++ close(fd);
++ }
++ g_free(dev_name);
++ }
++#endif
++ if (!index) {
++ item = gtk_menu_item_new_with_label(_("Default"));
++ gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0);
++ gtk_widget_show(item);
++ gtk_menu_append(GTK_MENU(menu), item);
++ }
+ }
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu);
+ }
+@@ -300,6 +426,69 @@ void oss_configure(void)
+ gtk_table_attach_defaults(GTK_TABLE(mixer_table), mixer_usemaster_check, 0, 1, 0, 1);
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), mixer_frame, gtk_label_new(_("Mixer")));
+
++ stereo_frame = gtk_frame_new("3D Stereo Enhancement:");
++ gtk_container_set_border_width(GTK_CONTAINER(stereo_frame), 5);
++ gtk_widget_show(stereo_frame);
++ stereo_box = gtk_vbox_new(FALSE, 0);
++ gtk_widget_show(stereo_box);
++ stereo_table = gtk_table_new(3, 1, FALSE);
++ gtk_widget_show(stereo_table);
++ stereo_check_button = gtk_check_button_new_with_label("3D Stereo Enhancement");
++ gtk_signal_connect(GTK_OBJECT(stereo_check_button), "toggled",
++ GTK_SIGNAL_FUNC(stereo_check_button_cb), NULL);
++ save3dse_check_button = gtk_check_button_new_with_label("Save 3DSE setting");
++ gtk_signal_connect(GTK_OBJECT(save3dse_check_button), "toggled",
++ GTK_SIGNAL_FUNC(save3dse_check_button_cb), stereo_check_button);
++ hw_check_button = gtk_check_button_new_with_label("Direct hardware access");
++ gtk_signal_connect(GTK_OBJECT(hw_check_button), "toggled",
++ GTK_SIGNAL_FUNC(hw_check_button_cb), hw_check_button);
++ if (oss_cfg.stereo != -1)
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(save3dse_check_button), TRUE);
++ if (oss_cfg.hardware_access)
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hw_check_button), TRUE);
++ if (getuid () != 0 || geteuid () != 0)
++ gtk_widget_set_sensitive(hw_check_button, FALSE);
++ switch(oss_get_3dse())
++ {
++ case 1:
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stereo_check_button), TRUE);
++ case 0:
++ gtk_widget_set_sensitive(hw_check_button, FALSE);
++ oss_cfg.hardware_access = FALSE;
++ break;
++ case -1:
++ if (!oss_cfg.hardware_access)
++ {
++ gtk_widget_set_sensitive(stereo_check_button, FALSE);
++ gtk_widget_set_sensitive(save3dse_check_button, FALSE);
++ }
++ else
++ if(oss_hw_get_3dse())
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stereo_check_button), TRUE);
++ break;
++ }
++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), stereo_check_button, 0, 1, 0, 1);
++ gtk_widget_show(stereo_check_button);
++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), save3dse_check_button, 0, 1, 1, 2);
++ gtk_widget_show(save3dse_check_button);
++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), hw_check_button, 0, 1, 2, 3);
++ gtk_widget_show(hw_check_button);
++ stereo_align_button = gtk_alignment_new(0.2, 0.5, 0, 0);
++ gtk_container_add(GTK_CONTAINER(stereo_align_button), stereo_table);
++ gtk_widget_show(stereo_align_button);
++ stereo_label = gtk_label_new("Please note that not all sound cards support this feature.\n"
++ "Supported: SoundBlaster 16, ViBRA, AWE32/64.");
++ gtk_label_set_justify(GTK_LABEL(stereo_label), GTK_JUSTIFY_LEFT);
++ gtk_misc_set_padding(GTK_MISC(stereo_label), 5, 5);
++ gtk_widget_show(stereo_label);
++ stereo_align_label = gtk_alignment_new(0, 0, 0, 0);
++ gtk_container_add(GTK_CONTAINER(stereo_align_label), stereo_label);
++ gtk_widget_show(stereo_align_label);
++ gtk_box_pack_end(GTK_BOX(stereo_box), stereo_align_label, FALSE, FALSE, 0);
++ gtk_box_pack_end(GTK_BOX(stereo_box), stereo_align_button, TRUE, FALSE, 0);
++ gtk_container_add(GTK_CONTAINER(stereo_frame), stereo_box);
++ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), stereo_frame, gtk_label_new("3DSE"));
++
+ bbox = gtk_hbutton_box_new();
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+ gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
+@@ -317,4 +506,5 @@ void oss_configure(void)
+ gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
+
+ gtk_widget_show_all(configure_win);
++ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
+ }
+--- xmms-1.2.11/Output/OSS/init.c.3dse 2001-03-08 06:49:47.000000000 +0100
++++ xmms-1.2.11/Output/OSS/init.c 2007-11-18 20:51:57.000000000 +0100
+@@ -33,6 +33,8 @@ void oss_init(void)
+ oss_cfg.use_alt_audio_device = FALSE;
+ oss_cfg.alt_audio_device = NULL;
+ oss_cfg.use_master=0;
++ oss_cfg.stereo = -1; /* = 3dse setting not saved */
++ oss_cfg.hardware_access = FALSE;
+
+ if ((cfgfile = xmms_cfg_open_default_file()))
+ {
+@@ -45,6 +47,32 @@ void oss_init(void)
+ xmms_cfg_read_string(cfgfile, "OSS", "alt_audio_device", &oss_cfg.alt_audio_device);
+ xmms_cfg_read_boolean(cfgfile, "OSS", "use_alt_mixer_device", &oss_cfg.use_alt_mixer_device);
+ xmms_cfg_read_string(cfgfile, "OSS", "alt_mixer_device", &oss_cfg.alt_mixer_device);
++ xmms_cfg_read_int(cfgfile, "OSS", "stereo", &oss_cfg.stereo);
++ xmms_cfg_read_boolean(cfgfile, "OSS", "hardware", &oss_cfg.hardware_access);
+ xmms_cfg_free(cfgfile);
+ }
++ if (oss_cfg.hardware_access)
++ if (initHardwareAccess() == -1)
++ oss_cfg.hardware_access = FALSE;
++
++ if (oss_cfg.hardware_access)
++ switch(oss_cfg.stereo)
++ {
++ case 0:
++ oss_hw_set_3dse(0);
++ break;
++ case 1:
++ oss_hw_set_3dse(1);
++ break;
++ }
++ else
++ switch(oss_cfg.stereo)
++ {
++ case 0:
++ oss_set_3dse(0);
++ break;
++ case 1:
++ oss_set_3dse(1);
++ break;
++ }
+ }
+--- xmms-1.2.11/Output/OSS/mixer.c.3dse 2001-06-16 15:30:35.000000000 +0200
++++ xmms-1.2.11/Output/OSS/mixer.c 2007-11-18 20:51:57.000000000 +0100
+@@ -32,6 +32,10 @@ static char* get_mixer_device(void)
+ return name;
+ }
+
++#include <sys/io.h>
++
++static int mixer_reg = 0, mixer_data = 0;
++
+ void oss_get_volume(int *l, int *r)
+ {
+ int fd, v, cmd, devs;
+@@ -64,6 +68,156 @@ void oss_get_volume(int *l, int *r)
+ }
+ }
+
++int oss_set_3dse(int stat)
++{
++ int fd;
++ gchar *devname;
++
++ if ((stat != 0) && (stat != 1))
++ return -1;
++
++ if (oss_cfg.mixer_device > 0)
++ devname = g_strdup_printf("/dev/mixer%d", oss_cfg.mixer_device);
++ else
++ devname = g_strdup("/dev/mixer");
++ fd = open(devname, O_RDONLY);
++ g_free(devname);
++
++ if (fd != -1)
++ {
++ if (ioctl(fd, SOUND_MIXER_3DSE, &stat) < 0)
++ {
++ close(fd);
++ return -1;
++ }
++ else
++ {
++ close(fd);
++ return stat;
++ }
++ }
++ return -1;
++}
++
++int oss_get_3dse(void)
++{
++ int fd, test_stat;
++ gchar *devname;
++
++ if (oss_cfg.mixer_device > 0)
++ devname = g_strdup_printf("/dev/mixer%d", oss_cfg.mixer_device);
++ else
++ devname = g_strdup("/dev/mixer");
++ fd = open(devname, O_RDONLY);
++ g_free(devname);
++
++ if (fd != -1)
++ {
++ test_stat = 2; /* code 2 will request status */
++ if (ioctl(fd, SOUND_MIXER_3DSE, &test_stat) < 0)
++ {
++ close(fd);
++ return -1;
++ }
++ else
++ {
++ close(fd);
++ return test_stat;
++ }
++ }
++ return -1;
++}
++
++static void check_legal_mixer ()
++{
++ if (!mixer_reg || !mixer_data)
++ {
++ fprintf(stderr, "Illegal mixer settings...\n");
++ exit(1);
++ }
++}
++
++void oss_hw_set_3dse(int stat)
++{
++ unsigned char b;
++ check_legal_mixer ();
++ switch(stat)
++ {
++ case 1:
++ outb(AWE_3DSE, mixer_reg);
++ b = inb(mixer_data);
++ b |= 1;
++ outb(b, mixer_data);
++ break;
++ case 0:
++ outb(AWE_3DSE, mixer_reg);
++ b = inb(mixer_data);
++ b &= 0xff - 1;
++ outb(b, mixer_data);
++ break;
++ }
++}
++
++int oss_hw_get_3dse(void)
++{
++ unsigned char b;
++ check_legal_mixer ();
++ outb(AWE_3DSE, mixer_reg);
++ b = inb(mixer_data);
++ return (b & 1);
++}
++
++int initHardwareAccess ()
++{
++ char *blasterEnv, *Aptr, *Mptr;
++ int tmp, mixer_base = 0;
++
++ if ((blasterEnv = getenv ("BLASTER")))
++ {
++ Aptr = blasterEnv;
++ while ((Aptr = strchr(Aptr, 'A')))
++ if ((tmp = strtol(++Aptr, &Aptr, 16)))
++ mixer_base = tmp;
++ Mptr = blasterEnv;
++ while ((Mptr = strchr(Mptr, 'M')))
++ if ((tmp = strtol(++Mptr, &Mptr, 16)))
++ mixer_base = tmp;
++ }
++ if (!mixer_base)
++ {
++ mixer_base = MIXER_BASE_DEFAULT;
++ }
++ else
++ {
++ switch (mixer_base)
++ {
++ case 0x210:
++ case 0x220:
++ case 0x230:
++ case 0x240:
++ case 0x250:
++ case 0x260:
++ case 0x280:
++ break;
++ default:
++ fprintf (stderr, "Illegal mixer base.\n");
++ exit (1);
++ }
++ }
++ mixer_reg = mixer_base + MIXER_REG_OFFSET;
++ mixer_data = mixer_base + MIXER_DATA_OFFSET;
++ if (getuid () == 0 && geteuid () == 0)
++ {
++ ioperm (mixer_reg, 1, 1);
++ ioperm (mixer_data, 1, 1);
++ return 0;
++ }
++ else
++ {
++ return -1;
++ }
++}
++
+ void oss_set_volume(int l, int r)
+ {
+ int fd, v, cmd, devs;
+--- xmms-1.2.11/Output/OSS/soundcard.h.3dse 2003-06-11 23:01:12.000000000 +0200
++++ xmms-1.2.11/Output/OSS/soundcard.h 2007-11-18 20:51:57.000000000 +0100
+@@ -1151,8 +1151,8 @@ typedef unsigned char mixer_record[128];
+ /*
+ * Two ioctls for special souncard function (OSS/Free only)
+ */
+-#define SOUND_MIXER_AGC _SIOWR('M', 103, int)
+-#define SOUND_MIXER_3DSE _SIOWR('M', 104, int)
++#define SOUND_MIXER_AGC __SIOWR('M', 103, int)
++#define SOUND_MIXER_3DSE __SIOWR('M', 104, int)
+ /*
+ * The SOUND_MIXER_PRIVATE# commands can be redefined by low level drivers.
+ * These features can be used when accessing device specific features.
diff --git a/abs/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch b/abs/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch
new file mode 100644
index 0000000..5fa9772
--- /dev/null
+++ b/abs/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch
@@ -0,0 +1,43 @@
+--- xmms-1.2.11/xmms/bmp.c.CVE-2007-0653.0654 2006-07-16 15:40:04.000000000 +0200
++++ xmms-1.2.11/xmms/bmp.c 2007-11-18 21:23:11.000000000 +0100
+@@ -19,6 +19,12 @@
+ */
+ #include "xmms.h"
+
++#if HAVE_STDINT_H
++#include <stdint.h>
++#elif !defined(UINT32_MAX)
++#define UINT32_MAX 0xffffffffU
++#endif
++
+ struct rgb_quad
+ {
+ guchar rgbBlue;
+@@ -183,7 +189,7 @@ GdkPixmap *read_bmp(gchar * filename)
+ }
+ else if (bitcount != 24 && bitcount != 16 && bitcount != 32)
+ {
+- gint ncols, i;
++ guint32 ncols, i;
+
+ ncols = offset - headSize - 14;
+ if (headSize == 12)
+@@ -201,9 +207,17 @@ GdkPixmap *read_bmp(gchar * filename)
+ }
+ }
+ fseek(file, offset, SEEK_SET);
++ /* verify buffer size */
++ if (!h || !w ||
++ w > (((UINT32_MAX - 3) / 3) / h) ||
++ h > (((UINT32_MAX - 3) / 3) / w)) {
++ g_warning("read_bmp(): width(%u)*height(%u) too large", w, h);
++ fclose(file);
++ return NULL;
++ }
++ data = g_malloc0((w * 3 * h) + 3); /* +3 is just for safety */
+ buffer = g_malloc(imgsize);
+ fread(buffer, imgsize, 1, file);
+- data = g_malloc0((w * 3 * h) + 3); /* +3 is just for safety */
+
+ if (bitcount == 1)
+ read_1b_rgb(buffer, imgsize, data, w, h, rgb_quads);
diff --git a/abs/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch b/abs/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch
new file mode 100644
index 0000000..55c06a7
--- /dev/null
+++ b/abs/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch
@@ -0,0 +1,10 @@
+--- xmms-1.2.11/Input/mpg123/common.c~ 2007-11-18 20:37:41.000000000 +0100
++++ xmms-1.2.11/Input/mpg123/common.c 2007-11-18 20:40:10.000000000 +0100
+@@ -274,6 +274,7 @@ static gboolean read_id3v2_tag(unsigned
+ char *songname = mpg123_title;
+ mpg123_title =
+ mpg123_format_song_title(tag, mpg123_filename);
++ if (filept)
+ mpg123_ip.set_info(mpg123_title, mpg123_length,
+ mpg123_bitrate * 1000,
+ mpg123_frequency, mpg123_stereo);
diff --git a/abs/extra/xmms/xmms.16.png b/abs/extra/xmms/xmms.16.png
new file mode 100644
index 0000000..c7f1a76
--- /dev/null
+++ b/abs/extra/xmms/xmms.16.png
Binary files differ
diff --git a/abs/extra/xmms/xmms.32.png b/abs/extra/xmms/xmms.32.png
new file mode 100644
index 0000000..1800ea5
--- /dev/null
+++ b/abs/extra/xmms/xmms.32.png
Binary files differ
diff --git a/abs/extra/xmms/xmms.48.png b/abs/extra/xmms/xmms.48.png
new file mode 100644
index 0000000..999cb83
--- /dev/null
+++ b/abs/extra/xmms/xmms.48.png
Binary files differ
diff --git a/abs/extra/xmms/xmms.install b/abs/extra/xmms/xmms.install
new file mode 100644
index 0000000..e111ef9
--- /dev/null
+++ b/abs/extra/xmms/xmms.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}