diff options
61 files changed, 2647 insertions, 120 deletions
diff --git a/community-staging/r8168-lts/PKGBUILD b/community-staging/r8168-lts/PKGBUILD index 7ee3ed602..411291872 100644 --- a/community-staging/r8168-lts/PKGBUILD +++ b/community-staging/r8168-lts/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 74721 2012-08-02 11:16:52Z mtorromeo $ +# $Id: PKGBUILD 75227 2012-08-16 12:37:34Z mtorromeo $ # Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com> pkgname=r8168-lts _pkgname=r8168 pkgver=8.031.00 -pkgrel=4 +pkgrel=5 pkgdesc="A kernel module for Realtek 8168 network cards for linux-lts" url="http://www.realtek.com.tw" license=("GPL") diff --git a/community/cdrtools/PKGBUILD b/community/cdrtools/PKGBUILD index dbe53d8f6..140834e21 100644 --- a/community/cdrtools/PKGBUILD +++ b/community/cdrtools/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 72573 2012-06-16 18:43:00Z stativ $ +# $Id: PKGBUILD 75213 2012-08-16 09:19:22Z stativ $ # Maintainer: Lukas Jirkovsky <l.jirkovsky@gmail.com> pkgname=cdrtools -pkgver=3.01a07 -pkgrel=4 +pkgver=3.01a08 +pkgrel=1 pkgdesc="Original cdrtools supporting CD, DVD and BluRay burning" arch=('i686' 'x86_64') url="http://cdrecord.berlios.de/private/cdrecord.html" @@ -14,7 +14,7 @@ options=(!makeflags) backup=('etc/default/cdrecord' 'etc/default/rscsi') install=cdrtools.install source=(ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-$pkgver.tar.gz) -md5sums=('b690d11ee6c9464b89d8684172807b51') +md5sums=('bed40540ef0dfc41d4b6e62c70012a01') build() { cd "$srcdir"/cdrtools-${pkgver%%a*} diff --git a/community/icecast/PKGBUILD b/community/icecast/PKGBUILD index 2787666ab..a9b3ce358 100644 --- a/community/icecast/PKGBUILD +++ b/community/icecast/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 72696 2012-06-20 10:14:35Z lfleischer $ +# $Id: PKGBUILD 75222 2012-08-16 11:13:33Z lfleischer $ # Maintainer: # Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> @@ -6,7 +6,7 @@ pkgname=icecast pkgver=2.3.3 -pkgrel=1 +pkgrel=2 pkgdesc='Streaming audio over the Internet' arch=('i686' 'x86_64') license=('GPL') @@ -17,11 +17,13 @@ backup=('etc/icecast.xml' source=("http://downloads.us.xiph.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz" 'icecastd' 'icecast.logrotate' - 'start-by-nobody.patch') + 'start-by-nobody.patch' + 'icecast.service') md5sums=('2b5d1b40778922e5f6431b7758c359ad' 'e823c1fdb080aae3d0c54ef8be95f7cb' '59c6552bcb1dd9fb542af8670dfabd3c' - 'd8e929d2214123a1954da4383bf16583') + 'd8e929d2214123a1954da4383bf16583' + 'ada6c389351af0487b5c62198adb4e2f') build() { cd "${srcdir}/${pkgname}-${pkgver}" @@ -47,4 +49,7 @@ package() { # create log directory install -d -g99 -o99 "${pkgdir}/var/log/icecast" + + # install systemd unit + install -Dm0644 "${srcdir}/icecast.service" "${pkgdir}/usr/lib/systemd/system/icecast.service" } diff --git a/community/icecast/icecast.service b/community/icecast/icecast.service new file mode 100644 index 000000000..fb3900b45 --- /dev/null +++ b/community/icecast/icecast.service @@ -0,0 +1,9 @@ +[Unit] +Description=Icecast Network Audio Streaming Server +After=network.target + +[Service] +ExecStart=/usr/bin/icecast -b -c /etc/icecast.xml + +[Install] +WantedBy=multi-user.target diff --git a/community/spacefm/PKGBUILD b/community/spacefm/PKGBUILD index 912d15ee2..a87cc4df0 100644 --- a/community/spacefm/PKGBUILD +++ b/community/spacefm/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 74358 2012-07-25 19:18:50Z bpiotrowski $ +# $Id: PKGBUILD 75235 2012-08-16 20:04:22Z bpiotrowski $ # Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> # Contributor: IgnorantGuru http://igurublog.wordpress.com/contact-ignorantguru/ # Contributor: ridikulus_rat <the.ridikulus.rat@gmail.com> pkgname=spacefm -pkgver=0.7.10 +pkgver=0.7.11 pkgrel=1 pkgdesc="A multi-panel tabbed file manager" arch=('i686' 'x86_64') @@ -22,7 +22,7 @@ optdepends=('lsof: device processes' 'udisks: mount as non-root user' 'udisks2: mount as non-root user') source=(https://raw.github.com/IgnorantGuru/spacefm/master/packages/${pkgver}/spacefm-${pkgver}.tar.xz) -md5sums=('16de3087b7225b89fad93a0710f2bbcf') +md5sums=('99719d34fd60ad9514c10a25f52d0bb3') build() { cd $srcdir/$pkgname-$pkgver diff --git a/community/udevil/PKGBUILD b/community/udevil/PKGBUILD index 091a56764..639697109 100644 --- a/community/udevil/PKGBUILD +++ b/community/udevil/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 74360 2012-07-25 19:22:08Z bpiotrowski $ +# $Id: PKGBUILD 75211 2012-08-16 07:12:48Z bpiotrowski $ # Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> # Contributor: IgnorantGuru http://igurublog.wordpress.com/contact-ignorantguru/ pkgname=udevil -pkgver=0.3.1 +pkgver=0.3.2 pkgrel=1 arch=('i686' 'x86_64') pkgdesc='Mount and unmount without password' @@ -24,7 +24,7 @@ provides=('devmon') backup=('etc/udevil/udevil.conf') install=$pkgname.install source=(https://raw.github.com/IgnorantGuru/$pkgname/master/packages/$pkgver/$pkgname-$pkgver.tar.xz) -md5sums=('f2541fe24c83cbc2cb63c5912fc417d9') +md5sums=('47b8f9334266d65020daa4679f71b504') build() { cd $srcdir/$pkgname-$pkgver diff --git a/core/sudo/PKGBUILD b/core/sudo/PKGBUILD index eaf765f3f..ce8a8773e 100644 --- a/core/sudo/PKGBUILD +++ b/core/sudo/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 160450 2012-06-02 03:17:41Z allan $ +# $Id: PKGBUILD 165376 2012-08-17 00:20:05Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=sudo -_ver=1.8.5p2 +_ver=1.8.5p3 pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}} pkgrel=1 pkgdesc="Give certain users the ability to run some commands as root" @@ -15,8 +15,8 @@ backup=('etc/sudoers' 'etc/pam.d/sudo') options=('!libtool' '!makeflags') source=(ftp://ftp.sudo.ws/pub/sudo/$pkgname-$_ver.tar.gz{,.sig} sudo.pam) -md5sums=('dc42ed9f0946d92273762d0ae7314d59' - '756d80fc1c996d4f5458deec5a69b5c4' +md5sums=('aa50e0a9ca02ac35d1020881bd3a221f' + 'aceea97d5f4fe063d6803bead339364d' '4e7ad4ec8f2fe6a40e12bcb2c0b256e3') build() { diff --git a/extra/php-apc/PKGBUILD b/extra/php-apc/PKGBUILD index a67c313c2..ab10abae0 100644 --- a/extra/php-apc/PKGBUILD +++ b/extra/php-apc/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 163778 2012-07-19 22:22:31Z pierre $ +# $Id: PKGBUILD 165375 2012-08-16 20:55:01Z pierre $ # Maintainer: Pierre Schmitz <pierre@archlinux.de> pkgname=php-apc -pkgver=3.1.11 +pkgver=3.1.12 pkgrel=1 arch=('i686' 'x86_64') pkgdesc='A free, open, and robust framework for caching and optimizing PHP intermediate code' @@ -11,7 +11,7 @@ depends=('php') license=('PHP') source=("http://pecl.php.net/get/APC-${pkgver}.tgz") backup=('etc/php/conf.d/apc.ini') -md5sums=('199b69ed1423aa869acafff485ef5f06') +md5sums=('b0ab91726717f410dfa284d5d1723b60') build() { cd $srcdir/APC-$pkgver diff --git a/extra/php/PKGBUILD b/extra/php/PKGBUILD index 19e1b6663..8e4e6cd4e 100644 --- a/extra/php/PKGBUILD +++ b/extra/php/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 163752 2012-07-19 05:20:23Z pierre $ +# $Id: PKGBUILD 165374 2012-08-16 20:54:57Z pierre $ # Maintainer: Pierre Schmitz <pierre@archlinux.de> pkgbase=php @@ -21,7 +21,7 @@ pkgname=('php' 'php-sqlite' 'php-tidy' 'php-xsl') -pkgver=5.4.5 +pkgver=5.4.6 pkgrel=1 arch=('i686' 'x86_64') license=('PHP') @@ -33,11 +33,11 @@ makedepends=('apache' 'imap' 'postgresql-libs' 'libldap' 'postfix' 'libvpx' source=("http://www.php.net/distributions/${pkgbase}-${pkgver}.tar.bz2" 'php.ini.patch' 'apache.conf' 'rc.d.php-fpm' 'php-fpm.conf.in.patch' 'logrotate.d.php-fpm' 'php-fpm.service' 'php-fpm.tmpfiles') -md5sums=('ffcc7f4dcf2b79d667fe0c110e6cb724' +md5sums=('c9aa0f4996d1b91ee9e45afcfaeb5d2e' '0b0bc7a917fc592bdf11dcd3c5c255e9' 'dec2cbaad64e3abf4f0ec70e1de4e8e9' '6d46667e00d65933ec0c958279c0a803' - '825e580dd5708d959b50944afa1b12b6' + '5c1f4c967b66ce3eaf819b46951dcbf5' 'f56b5bb7e93c802ae8519182fbea3387' '86c73d481f3099e740e602869bacf637' 'c60343df74f8e1afb13b084d5c0e47ed') diff --git a/extra/php/php-fpm.conf.in.patch b/extra/php/php-fpm.conf.in.patch index 0b17182fd..d618fca4e 100644 --- a/extra/php/php-fpm.conf.in.patch +++ b/extra/php/php-fpm.conf.in.patch @@ -1,5 +1,5 @@ ---- sapi/fpm/php-fpm.conf.in 2011-10-08 23:04:10.000000000 +0200 -+++ sapi/fpm/php-fpm.conf.in 2012-03-01 19:50:48.549947258 +0100 +--- sapi/fpm/php-fpm.conf.in 2012-08-15 06:26:05.000000000 +0200 ++++ sapi/fpm/php-fpm.conf.in 2012-08-16 14:17:41.809663595 +0200 @@ -12,7 +12,7 @@ ; Relative path can also be used. They will be prefixed by: ; - the global prefix if it's been set (-p arguement) @@ -18,7 +18,7 @@ ; Error log file ; If it's set to "syslog", log is sent to syslogd instead of being written -@@ -140,7 +140,8 @@ +@@ -148,7 +148,8 @@ ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. @@ -28,7 +28,7 @@ ; Set listen(2) backlog. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) -@@ -151,9 +152,9 @@ +@@ -159,9 +160,9 @@ ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0666 @@ -41,7 +41,7 @@ ; List of ipv4 addresses of FastCGI clients which are allowed to connect. ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original -@@ -442,7 +443,7 @@ +@@ -458,7 +459,7 @@ ; Chdir to this directory at the start. ; Note: relative path can be used. ; Default Value: current directory or / when chroot diff --git a/extra/telepathy-gabble/PKGBUILD b/extra/telepathy-gabble/PKGBUILD index a9f1c8542..5d48fee52 100644 --- a/extra/telepathy-gabble/PKGBUILD +++ b/extra/telepathy-gabble/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 162120 2012-06-21 01:49:02Z ibiru $ +# $Id: PKGBUILD 165360 2012-08-16 12:35:13Z ibiru $ # Maintainer : Ionut Biru <ibiru@archlinux.org> # Contributor: Daniel Balieiro <daniel@balieiro.com> # Contributor: Rodrigo L. M. Flores <mail@rodrigoflores.org> pkgname=telepathy-gabble -pkgver=0.16.1 +pkgver=0.16.2 pkgrel=1 pkgdesc="A Jabber/XMPP connection manager for Telepathy" arch=('i686' 'x86_64') @@ -15,7 +15,7 @@ makedepends=('libxslt' 'python2') options=('!libtool' '!emptydirs') source=(http://telepathy.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz) install=telepathy-gabble.install -md5sums=('f4e6ca551cc4603276f9acdc2b5d4db4') +md5sums=('d79fc12524e9b68e9a1a833960f97d01') build() { cd $pkgname-$pkgver diff --git a/extra/telepathy-glib/PKGBUILD b/extra/telepathy-glib/PKGBUILD index 3839d4a34..a0ad65e36 100644 --- a/extra/telepathy-glib/PKGBUILD +++ b/extra/telepathy-glib/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 156974 2012-04-23 09:10:23Z ibiru $ +# $Id: PKGBUILD 165356 2012-08-16 11:08:48Z ibiru $ # Maintainer: Ionut Biru <ibiru@archlinux.org> # Contributor: Kessia 'even' Pinheiro <kessiapinheiro at gmail.com # Contributor: Bjorn Lindeijer <bjorn lindeijer nl> pkgname=telepathy-glib -pkgver=0.18.1 +pkgver=0.18.2 pkgrel=1 pkgdesc="GLib bindings for the Telepathy D-Bus protocol" arch=('i686' 'x86_64') @@ -14,10 +14,10 @@ options=('!libtool' '!emptydirs') depends=('dbus-glib') makedepends=('libxslt' 'vala' 'gobject-introspection') source=(http://telepathy.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz) -md5sums=('461732739e3fbf8467991bbe661fb29a') +md5sums=('034ec8e4c3a60d4ba1da67952ef3ee2f') build() { - cd "$pkgname-$pkgver" + cd $pkgname-$pkgver PYTHON=/usr/bin/python2 ./configure --prefix=/usr \ --libexecdir=/usr/lib/telepathy \ --enable-vala-bindings \ @@ -26,6 +26,6 @@ build() { } package() { - cd "$pkgname-$pkgver" + cd $pkgname-$pkgver make DESTDIR="$pkgdir" install } diff --git a/extra/telepathy-idle/PKGBUILD b/extra/telepathy-idle/PKGBUILD index 417b88208..1c8ebc5be 100644 --- a/extra/telepathy-idle/PKGBUILD +++ b/extra/telepathy-idle/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 141602 2011-10-31 15:52:30Z ibiru $ +# $Id: PKGBUILD 165358 2012-08-16 11:39:38Z ibiru $ # Maintainer: Ionut Biru <ibiru@archlinux.org> # Contributor: Bjorn Lindeijer <bjorn lindeijer nl> # Contributor: Samuel Mendes <heka.lok@gmail.com> pkgname=telepathy-idle -pkgver=0.1.11 +pkgver=0.1.12 pkgrel=1 pkgdesc="An IRC connection manager for Telepathy" arch=('i686' 'x86_64') @@ -14,17 +14,18 @@ license=('LGPL') depends=('telepathy-glib' 'openssl') makedepends=('libxslt' 'python2') install=telepathy-idle.install -source=(http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('be277e8f0bd32ae56af799f0ff4ec72e') +options=(!makeflags) +source=(http://telepathy.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('e77e5b84cc8f77cf12d15727c30df366') build() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd $pkgname-$pkgver ./configure --prefix=/usr \ --libexecdir=/usr/lib/telepathy make } package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install } diff --git a/kernels/linux-libre-rt/PKGBUILD b/kernels/linux-libre-rt/PKGBUILD index fbed07cd9..6348f4093 100644 --- a/kernels/linux-libre-rt/PKGBUILD +++ b/kernels/linux-libre-rt/PKGBUILD @@ -15,7 +15,7 @@ _releasever=9 _rtpatchver=rt17 _pkgver=${_basekernel}.${_releasever} pkgver=${_basekernel}.${_releasever}_${_rtpatchver} -pkgrel=1 +pkgrel=1.1 _lxopkgver=${_basekernel}.9 # nearly always the same as pkgver arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" @@ -42,8 +42,8 @@ _localversionname=-LIBRE-RT md5sums=('a5e128ca059cceb8b69148b41ff4ac6f' '6ef5ab23e1999605f0185a6fc4d224f2' '8ddc7ee43b418e06121bd09fa0e97bf6' - 'f083edc19ca3b7abbafa787dad005eae' - '9e4b6e8d991d6873b2c37a10b32b8d9c' + 'd176ceb303ecfb2303d9659ea2dd91c7' + 'bcb219ab37ed19912126189cfca30538' '82496e68851d1960543a07ba51cdb44a' '2967cecc3af9f954ccc822fd63dca6ff' '8267264d9a8966e57fdacd1fa1fc65c4' diff --git a/kernels/linux-libre-rt/config.i686 b/kernels/linux-libre-rt/config.i686 index 4748037f0..31ce556cf 100644 --- a/kernels/linux-libre-rt/config.i686 +++ b/kernels/linux-libre-rt/config.i686 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 3.4.9 Kernel Configuration +# Linux/i386 3.4.0 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -132,6 +132,7 @@ CONFIG_CGROUP_MEM_RES_CTLR_KMEM=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set # CONFIG_CHECKPOINT_RESTORE is not set @@ -5434,6 +5435,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y +# CONFIG_MAGIC_SYSRQ_FORCE_PRINTK is not set CONFIG_STRIP_ASM_SYMS=y CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y diff --git a/kernels/linux-libre-rt/config.x86_64 b/kernels/linux-libre-rt/config.x86_64 index 0990586b0..f8819f623 100644 --- a/kernels/linux-libre-rt/config.x86_64 +++ b/kernels/linux-libre-rt/config.x86_64 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 3.4.9 Kernel Configuration +# Linux/x86_64 3.4.0 Kernel Configuration # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -132,6 +132,7 @@ CONFIG_CGROUP_MEM_RES_CTLR_KMEM=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set # CONFIG_CHECKPOINT_RESTORE is not set @@ -5206,6 +5207,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_FRAME_WARN=2048 CONFIG_MAGIC_SYSRQ=y +# CONFIG_MAGIC_SYSRQ_FORCE_PRINTK is not set CONFIG_STRIP_ASM_SYMS=y CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y diff --git a/kernels/linux-libre-rt/linux-libre-rt.install b/kernels/linux-libre-rt/linux-libre-rt.install index 9d511d7bd..1f57ce546 100644 --- a/kernels/linux-libre-rt/linux-libre-rt.install +++ b/kernels/linux-libre-rt/linux-libre-rt.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME=-rt -KERNEL_VERSION=3.4.9-1-rt17-LIBRE-RT +KERNEL_VERSION=3.4.9-1.1-rt17-LIBRE-RT # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' diff --git a/libre/linux-libre-lts/PKGBUILD b/libre/linux-libre-lts/PKGBUILD index 028899f13..e7d044b92 100644 --- a/libre/linux-libre-lts/PKGBUILD +++ b/libre/linux-libre-lts/PKGBUILD @@ -7,10 +7,10 @@ pkgbase=linux-libre-lts # Build stock -LIBRE-LTS kernel #pkgbase=linux-libre-custom # Build kernel with a different name _basekernel=3.0 -_sublevel=40 +_sublevel=41 pkgver=${_basekernel}.${_sublevel} -pkgrel=1.2 -_lxopkgver=${_basekernel}.39 # nearly always the same as pkgver +pkgrel=1 +_lxopkgver=${_basekernel}.41 # nearly always the same as pkgver arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" license=('GPL2') @@ -33,9 +33,9 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn _kernelname=${pkgbase#linux-libre} _localversionname=-LIBRE-LTS md5sums=('5f64180fe7df4e574dac5911b78f5067' - '4c42d5680df7921c20dda6f5fa44b275' - '5e3362ef81c99563852f1b7a8c5b5837' - '3d078c10d51f9c2f4d0ec6be531caf1d' + 'b4ebaa2ebf8418c75aba96fd4dd6daf3' + '8cd05778fc1c2d8145b3b9932b4e3164' + '87a54dc6251cf2adf35f72ddeddb6ea8' 'c072b17032e80debc6a8626299245d46' '2967cecc3af9f954ccc822fd63dca6ff' '8267264d9a8966e57fdacd1fa1fc65c4' @@ -43,7 +43,7 @@ md5sums=('5f64180fe7df4e574dac5911b78f5067' '9d3c56a4b999c8bfbd4018089a62f662' '263725f20c0b9eb9c353040792d644e5' 'f36222e7ce20c8e4dc27376f9be60f6c' - 'eea9aa0065f636fc924a23b3ffd24343') + '1f082cc9e5a18e227f7a044ff429914a') if [ "$CARCH" != "mips64el" ]; then # Don't use the Loongson-specific patches on non-mips64el arches. unset source[${#source[@]}-1] diff --git a/libre/linux-libre-lts/config.i686 b/libre/linux-libre-lts/config.i686 index 240eccfbf..f4e10c441 100644 --- a/libre/linux-libre-lts/config.i686 +++ b/libre/linux-libre-lts/config.i686 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux/i386 3.0.39-1 Kernel Configuration +# Linux/i386 3.0.40-2 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -62,7 +62,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" CONFIG_LOCALVERSION="-LIBRE-LTS" -CONFIG_LOCALVERSION_AUTO=y +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y @@ -106,13 +106,14 @@ CONFIG_IRQ_FORCED_THREADING=y # # RCU Subsystem # -CONFIG_TREE_PREEMPT_RCU=y -CONFIG_PREEMPT_RCU=y +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_PREEMPT_RCU is not set # CONFIG_RCU_TRACE is not set CONFIG_RCU_FANOUT=32 # CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set # CONFIG_TREE_RCU_TRACE is not set -# CONFIG_RCU_BOOST is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 @@ -194,6 +195,7 @@ CONFIG_OPROFILE=m CONFIG_HAVE_OPROFILE=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_OPTPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_KRETPROBES=y CONFIG_USER_RETURN_NOTIFIER=y @@ -252,27 +254,27 @@ CONFIG_PADATA=y # CONFIG_INLINE_SPIN_LOCK_BH is not set # CONFIG_INLINE_SPIN_LOCK_IRQ is not set # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set -# CONFIG_INLINE_SPIN_UNLOCK is not set +CONFIG_INLINE_SPIN_UNLOCK=y # CONFIG_INLINE_SPIN_UNLOCK_BH is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_READ_TRYLOCK is not set # CONFIG_INLINE_READ_LOCK is not set # CONFIG_INLINE_READ_LOCK_BH is not set # CONFIG_INLINE_READ_LOCK_IRQ is not set # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set -# CONFIG_INLINE_READ_UNLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y # CONFIG_INLINE_READ_UNLOCK_BH is not set -# CONFIG_INLINE_READ_UNLOCK_IRQ is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_WRITE_TRYLOCK is not set # CONFIG_INLINE_WRITE_LOCK is not set # CONFIG_INLINE_WRITE_LOCK_BH is not set # CONFIG_INLINE_WRITE_LOCK_IRQ is not set # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set -# CONFIG_INLINE_WRITE_UNLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y # CONFIG_INLINE_WRITE_UNLOCK_BH is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set # CONFIG_MUTEX_SPIN_ON_OWNER is not set CONFIG_FREEZER=y @@ -360,9 +362,9 @@ CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y # CONFIG_IRQ_TIME_ACCOUNTING is not set -# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y +# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -3809,6 +3811,7 @@ CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y +# CONFIG_DRM_I810 is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_MGA=m @@ -5315,7 +5318,6 @@ CONFIG_TIMER_STATS=y # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set # CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_DEBUG_PREEMPT is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set @@ -5346,7 +5348,6 @@ CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -# CONFIG_RCU_CPU_STALL_VERBOSE is not set # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set @@ -5383,7 +5384,6 @@ CONFIG_FTRACE=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y # CONFIG_IRQSOFF_TRACER is not set -# CONFIG_PREEMPT_TRACER is not set CONFIG_SCHED_TRACER=y CONFIG_FTRACE_SYSCALLS=y CONFIG_BRANCH_PROFILE_NONE=y diff --git a/libre/linux-libre-lts/config.x86_64 b/libre/linux-libre-lts/config.x86_64 index 86b096eaf..80f5a7aca 100644 --- a/libre/linux-libre-lts/config.x86_64 +++ b/libre/linux-libre-lts/config.x86_64 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux/x86_64 3.0.39-1 Kernel Configuration +# Linux/x86_64 3.0.40-2 Kernel Configuration # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -63,7 +63,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" CONFIG_LOCALVERSION="-LIBRE-LTS" -CONFIG_LOCALVERSION_AUTO=y +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y @@ -107,13 +107,14 @@ CONFIG_IRQ_FORCED_THREADING=y # # RCU Subsystem # -CONFIG_TREE_PREEMPT_RCU=y -CONFIG_PREEMPT_RCU=y +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_PREEMPT_RCU is not set # CONFIG_RCU_TRACE is not set CONFIG_RCU_FANOUT=64 # CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set # CONFIG_TREE_RCU_TRACE is not set -# CONFIG_RCU_BOOST is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 @@ -195,6 +196,7 @@ CONFIG_OPROFILE=m CONFIG_HAVE_OPROFILE=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_OPTPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_KRETPROBES=y CONFIG_USER_RETURN_NOTIFIER=y @@ -253,27 +255,27 @@ CONFIG_PADATA=y # CONFIG_INLINE_SPIN_LOCK_BH is not set # CONFIG_INLINE_SPIN_LOCK_IRQ is not set # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set -# CONFIG_INLINE_SPIN_UNLOCK is not set +CONFIG_INLINE_SPIN_UNLOCK=y # CONFIG_INLINE_SPIN_UNLOCK_BH is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_READ_TRYLOCK is not set # CONFIG_INLINE_READ_LOCK is not set # CONFIG_INLINE_READ_LOCK_BH is not set # CONFIG_INLINE_READ_LOCK_IRQ is not set # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set -# CONFIG_INLINE_READ_UNLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y # CONFIG_INLINE_READ_UNLOCK_BH is not set -# CONFIG_INLINE_READ_UNLOCK_IRQ is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_WRITE_TRYLOCK is not set # CONFIG_INLINE_WRITE_LOCK is not set # CONFIG_INLINE_WRITE_LOCK_BH is not set # CONFIG_INLINE_WRITE_LOCK_IRQ is not set # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set -# CONFIG_INLINE_WRITE_UNLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y # CONFIG_INLINE_WRITE_UNLOCK_BH is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set # CONFIG_MUTEX_SPIN_ON_OWNER is not set CONFIG_FREEZER=y @@ -342,9 +344,9 @@ CONFIG_NR_CPUS=64 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y # CONFIG_IRQ_TIME_ACCOUNTING is not set -# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y +# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -3625,6 +3627,7 @@ CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y +# CONFIG_DRM_I810 is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_MGA=m @@ -5056,7 +5059,6 @@ CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set -# CONFIG_DEBUG_PREEMPT is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set @@ -5086,7 +5088,6 @@ CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -# CONFIG_RCU_CPU_STALL_VERBOSE is not set # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set @@ -5123,7 +5124,6 @@ CONFIG_FTRACE=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y # CONFIG_IRQSOFF_TRACER is not set -# CONFIG_PREEMPT_TRACER is not set CONFIG_SCHED_TRACER=y CONFIG_FTRACE_SYSCALLS=y CONFIG_BRANCH_PROFILE_NONE=y diff --git a/libre/linux-libre-lts/linux-libre-lts.install b/libre/linux-libre-lts/linux-libre-lts.install index 58b0a302a..e92e5eb16 100644 --- a/libre/linux-libre-lts/linux-libre-lts.install +++ b/libre/linux-libre-lts/linux-libre-lts.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME=-lts -KERNEL_VERSION=3.0.40-1-LIBRE-LTS +KERNEL_VERSION=3.0.41-1-LIBRE-LTS # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index 012492f94..661fec088 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -12,8 +12,8 @@ pkgbase=linux-libre # Build stock -LIBRE kernel _basekernel=3.5 _sublevel=2 pkgver=${_basekernel}.${_sublevel} -pkgrel=1 -_lxopkgver=${_basekernel}.1 # nearly always the same as pkgver +pkgrel=1.1 +_lxopkgver=${_basekernel}.2 # nearly always the same as pkgver arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" license=('GPL2') @@ -35,14 +35,14 @@ _kernelname=${pkgbase#linux-libre} _localversionname=-LIBRE md5sums=('2407fc9563a74acaf38aa0c06516eb1c' 'b081f37b73c652cbb0d5193174092709' - '7f0b7950bc9d2a20cdb6b850e6e4eb5a' - 'a796ea383eb136cb38fab0a52b6d2f52' + '3ba164b409d8024fdd433f3cc4ae1fea' + 'fa1e2ab2f036974199374f015f5a2c46' 'e49ac236dfeef709f91a3d993ea7b62c' '2967cecc3af9f954ccc822fd63dca6ff' '8267264d9a8966e57fdacd1fa1fc65c4' '04b21c79df0a952c22d681dd4f4562df' '9d3c56a4b999c8bfbd4018089a62f662' - 'eb25429666af638b01baa663eca74d08') + 'd822cc131b20090f39b0d448b0e1f8be') if [ "$CARCH" != "mips64el" ]; then # Don't use the Loongson-specific patches on non-mips64el arches. unset source[${#source[@]}-1] diff --git a/libre/linux-libre/config.i686 b/libre/linux-libre/config.i686 index a66ebeaa7..54db12ba1 100644 --- a/libre/linux-libre/config.i686 +++ b/libre/linux-libre/config.i686 @@ -334,7 +334,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_X86_32_IRIS=m CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_TIME_ACCOUNTING=y # CONFIG_XEN_PRIVILEGED_GUEST is not set CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y diff --git a/libre/linux-libre/config.x86_64 b/libre/linux-libre/config.x86_64 index 350a2b905..31da569ad 100644 --- a/libre/linux-libre/config.x86_64 +++ b/libre/linux-libre/config.x86_64 @@ -335,7 +335,7 @@ CONFIG_X86_MPPARSE=y CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_TIME_ACCOUNTING=y CONFIG_XEN=y CONFIG_XEN_DOM0=y CONFIG_XEN_PRIVILEGED_GUEST=y diff --git a/libre/linux-libre/linux-libre.install b/libre/linux-libre/linux-libre.install index dc313170a..59b77b82d 100644 --- a/libre/linux-libre/linux-libre.install +++ b/libre/linux-libre/linux-libre.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME= -KERNEL_VERSION=3.5.2-1-LIBRE +KERNEL_VERSION=3.5.2-1.1-LIBRE # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' diff --git a/libre/mcomix-libre/PKGBUILD b/libre/mcomix-libre/PKGBUILD new file mode 100644 index 000000000..d30bbb1a3 --- /dev/null +++ b/libre/mcomix-libre/PKGBUILD @@ -0,0 +1,47 @@ +# $Id$ +# Maintainer: schuay <jakob.gruber@gmail.com> +# Contributor: Ray Powell <ray_al@xphoniexx.net> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> + +_pkgname=mcomix +pkgname=mcomix-libre +pkgver=0.99 +pkgrel=1 +pkgdesc="A user-friendly, customizable image viewer specifically designed to handle comic books" +arch=('any') +url="http://sourceforge.net/projects/mcomix/" +license=('GPL') +depends=('pygtk' 'python-imaging' 'xdg-utils' 'python2' \ + 'desktop-file-utils' 'hicolor-icon-theme' 'python2-distribute') +makedepends=('gettext' 'intltool') +optdepends=('ununrar: for rar compressed comics') +conflicts=('mcomix' 'comix') +replaces=('mcomix' 'comix') +provides=("mcomix=${pkgver}") +install='mcomix.install' +source=("http://downloads.sourceforge.net/project/mcomix/MComix-${pkgver}/mcomix-${pkgver}.tar.bz2") + +build() { + cd ${srcdir}/${_pkgname}-${pkgver} + + # python2 fix + for file in $(grep -Rl "/usr/bin/env python" .); + do + sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' $file + done +} + +package() { + cd ${srcdir}/${_pkgname}-${pkgver} + + export PYTHONPATH=${pkgdir}/usr/lib/python2.7/site-packages/ + mkdir -p $PYTHONPATH + + python2 setup.py install --prefix=${pkgdir}/usr --optimize=1 \ + --single-version-externally-managed --root=/ + + install -Dm644 mime/comicbook.schemas \ + ${pkgdir}/usr/share/gconf/schemas/mcomix.schemas +} + +md5sums=('a1ff7e1955042069d5005b4034e7a914') diff --git a/libre/mcomix-libre/mcomix.install b/libre/mcomix-libre/mcomix.install new file mode 100644 index 000000000..2d3c6c3e3 --- /dev/null +++ b/libre/mcomix-libre/mcomix.install @@ -0,0 +1,32 @@ +pkgname=mcomix + +post_install() { + if [ -f usr/bin/xdg-icon-resource ]; then + xdg-icon-resource forceupdate + fi + if [ -f usr/sbin/gconfpkg ]; then + usr/sbin/gconfpkg --install ${pkgname} + fi + update-desktop-database -q +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + if [ -f usr/sbin/gconfpkg ]; then + usr/sbin/gconfpkg --uninstall ${pkgname} + fi +} + +post_remove() { + if [ -f usr/bin/xdg-icon-resource ]; then + xdg-icon-resource forceupdate + fi + update-desktop-database -q +} diff --git a/multilib/lib32-krb5/PKGBUILD b/multilib/lib32-krb5/PKGBUILD index e186c35ba..fca3cecca 100644 --- a/multilib/lib32-krb5/PKGBUILD +++ b/multilib/lib32-krb5/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 72528 2012-06-16 10:15:32Z bluewind $ +# $Id: PKGBUILD 75216 2012-08-16 11:05:27Z bluewind $ # Maintainer: Florian Pritz <flo@xinu.at> # Contributor: Stéphane Gaudreault <stephane@archlinux.org> _pkgbasename=krb5 pkgname=lib32-$_pkgbasename -pkgver=1.10.2 +pkgver=1.10.3 pkgrel=1 pkgdesc="The Kerberos network authentication system (32-bit)" arch=('x86_64') @@ -14,7 +14,7 @@ depends=('lib32-e2fsprogs' 'lib32-libldap' 'lib32-keyutils' "$_pkgbasename") makedepends=('perl' 'gcc-multilib') source=("http://web.mit.edu/kerberos/dist/${_pkgbasename}/1.10/${_pkgbasename}-${pkgver}-signed.tar" 'krb5-1.10.1-gcc47.patch') -sha1sums=('8b6e2c5bf0c65aacd368b3698add7888f2a7332d' +sha1sums=('04ab9837e5d1958158bcb30bd6480201089a0cbb' '78b759d566b1fdefd9bbcd06df14f07f12effe96') options=('!emptydirs') diff --git a/multilib/lib32-libxml2/PKGBUILD b/multilib/lib32-libxml2/PKGBUILD index 48fe4649d..df40bd417 100644 --- a/multilib/lib32-libxml2/PKGBUILD +++ b/multilib/lib32-libxml2/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 64012 2012-02-08 18:56:17Z pschmitz $ +# $Id: PKGBUILD 75224 2012-08-16 11:15:20Z bluewind $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: John Proctor <jproctor@prium.net> _pkgbasename=libxml2 pkgname=lib32-$_pkgbasename -pkgver=2.7.8 -pkgrel=2 +pkgver=2.8.0 +pkgrel=1 pkgdesc="XML parsing library, version 2 (32-bit)" arch=(x86_64) license=('custom') @@ -13,10 +13,8 @@ depends=('lib32-zlib>=1.2.4' 'lib32-readline>=6.1' 'lib32-ncurses>=5.7' $_pkgbas makedepends=(gcc-multilib) options=('!libtool') url="http://www.xmlsoft.org/" -source=(ftp://ftp.xmlsoft.org/${_pkgbasename}/${_pkgbasename}-${pkgver}.tar.gz - shared_library_versionning.patch) -md5sums=('8127a65e8c3b08856093099b52599c86' - '84aeb7c6db023eae044e95d9211dba53') +source=(ftp://ftp.xmlsoft.org/${_pkgbasename}/${_pkgbasename}-${pkgver}.tar.gz) +md5sums=('c62106f02ee00b6437f0fb9d370c1093') build() { export CC="gcc -m32" @@ -24,9 +22,8 @@ build() { export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" cd "${srcdir}/${_pkgbasename}-${pkgver}" - patch -Np1 -i "${srcdir}/shared_library_versionning.patch" autoreconf -fi - ./configure --prefix=/usr --with-threads --with-history --libdir=/usr/lib32 + ./configure --prefix=/usr --with-threads --with-history --libdir=/usr/lib32 --without-lzma make } diff --git a/multilib/lib32-libxrandr/PKGBUILD b/multilib/lib32-libxrandr/PKGBUILD index 25f00fe28..52775b592 100644 --- a/multilib/lib32-libxrandr/PKGBUILD +++ b/multilib/lib32-libxrandr/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 68137 2012-03-18 14:42:28Z lcarlier $ +# $Id: PKGBUILD 75218 2012-08-16 11:10:49Z bluewind $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> _pkgbasename=libxrandr pkgname=lib32-$_pkgbasename -pkgver=1.3.2 -pkgrel=2 +pkgver=1.4.0 +pkgrel=1 pkgdesc="X11 RandR extension library (32-bit)" arch=('x86_64') license=('custom') @@ -13,7 +13,7 @@ depends=('lib32-libxext' 'lib32-libxrender' $_pkgbasename) makedepends=('xorg-util-macros' gcc-multilib) options=('!libtool') source=(${url}/releases/individual/lib/libXrandr-${pkgver}.tar.bz2) -sha1sums=('0c844a4c5237f96794f0c18a5af16dc5ab7a36ec') +sha256sums=('033ad0ac2f012afb05268660f6d78705c85f84689f92fa7b47ce12959b15f5c3') build() { export CC="gcc -m32" diff --git a/multilib/lib32-p11-kit/PKGBUILD b/multilib/lib32-p11-kit/PKGBUILD index b9f22c513..dbba642ba 100644 --- a/multilib/lib32-p11-kit/PKGBUILD +++ b/multilib/lib32-p11-kit/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 68876 2012-04-04 16:53:34Z bluewind $ +# $Id: PKGBUILD 75220 2012-08-16 11:11:53Z bluewind $ # Maintainer: Florian Pritz <bluewind@xinu.at> # Contributor: Christoph Vigano <mail@cvigano.de> _pkgbasename=p11-kit pkgname=lib32-$_pkgbasename -pkgver=0.12 +pkgver=0.13 pkgrel=1 pkgdesc="Library to work with PKCS#11 modules (32-bit)" arch=(i686 x86_64) @@ -13,7 +13,7 @@ license=('BSD') depends=(lib32-glibc $_pkgbasename) options=(!libtool) source=($url/releases/$_pkgbasename-$pkgver.tar.gz) -md5sums=('66baf7ddde982d1b7294d3bd63be7446') +md5sums=('3892bc07ff54b1b391aad4628911801d') build() { export CC="gcc -m32" diff --git a/testing/git/ChangeLog b/testing/git/ChangeLog new file mode 100644 index 000000000..f0c15233e --- /dev/null +++ b/testing/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/testing/git/PKGBUILD b/testing/git/PKGBUILD new file mode 100644 index 000000000..bc0f8c8df --- /dev/null +++ b/testing/git/PKGBUILD @@ -0,0 +1,115 @@ +# $Id: PKGBUILD 165368 2012-08-16 14:45:26Z dan $ +# Maintainer: Dan McGee <dan@archlinux.org> + +pkgname=git +pkgver=1.7.11.5 +pkgrel=2 +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') +install=git.install +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 + git-daemon@.service + git-daemon.socket) +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 + + # systemd stuff + install -D -m 644 "$srcdir"/git-daemon@.service "$pkgdir"/usr/lib/systemd/system/git-daemon@.service + install -D -m 644 "$srcdir"/git-daemon.socket "$pkgdir"/usr/lib/systemd/system/git-daemon.socket +} + +md5sums=('9985d35c11531d546426ebefb327c847' + 'f08a5a60e57f00399bbd384cfd7791f3' + '8e2648910fd5dd4f1c41d3c7fa9e9156' + '2e42bf97779a1c6411d89043334c9e78' + '198ef9d9e79bd8d5868f95ed9f79cc34' + '779c00deb490291c6b477b8cc0161123') diff --git a/testing/git/git-daemon b/testing/git/git-daemon new file mode 100644 index 000000000..21ba73ed5 --- /dev/null +++ b/testing/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/testing/git/git-daemon.conf b/testing/git/git-daemon.conf new file mode 100644 index 000000000..3f9a12060 --- /dev/null +++ b/testing/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/testing/git/git-daemon.socket b/testing/git/git-daemon.socket new file mode 100644 index 000000000..c84740588 --- /dev/null +++ b/testing/git/git-daemon.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Git Daemon Socket +After=network.target + +[Socket] +ListenStream=9418 +Accept=true + +[Install] +WantedBy=sockets.target diff --git a/testing/git/git-daemon@.service b/testing/git/git-daemon@.service new file mode 100644 index 000000000..67d4cfa9c --- /dev/null +++ b/testing/git/git-daemon@.service @@ -0,0 +1,11 @@ +[Unit] +Description=Git Daemon Instance +After=network.target + +[Service] +User=git +# The '-' is to ignore non-zero exit statuses +ExecStart=-/usr/lib/git-core/git-daemon --inetd --export-all --base-path=/srv/git +StandardInput=socket +StandardOutput=inherit +StandardError=journal diff --git a/testing/git/git.install b/testing/git/git.install new file mode 100644 index 000000000..9edc065ba --- /dev/null +++ b/testing/git/git.install @@ -0,0 +1,22 @@ +post_install() { + if ! getent group git >/dev/null; then + groupadd --system git + fi + if ! getent passwd git >/dev/null; then + useradd --system -c 'git daemon user' -g git -d / -s /bin/bash git + passwd -l git >/dev/null + fi +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + if getent passwd git >/dev/null; then + userdel git + fi + if getent group git >/dev/null; then + groupdel git + fi +} diff --git a/testing/irqbalance/PKGBUILD b/testing/irqbalance/PKGBUILD new file mode 100644 index 000000000..52c5ae477 --- /dev/null +++ b/testing/irqbalance/PKGBUILD @@ -0,0 +1,40 @@ +# Maintainer: Dan McGee <dan@archlinux.org> +# Contributor: Martin Striz <ms@poruba.net> + +pkgname=irqbalance +_realver=1.0.3 +pkgver=1.0.3.20110809 +pkgrel=1 +pkgdesc="IRQ balancing daemon for SMP systems" +arch=('i686' 'x86_64') +url="http://code.google.com/p/irqbalance" +license=('GPL') +depends=(glib2 numactl libcap-ng) +makedepends=(pkgconfig) +backup=(etc/conf.d/irqbalance) +source=(http://irqbalance.googlecode.com/files/irqbalance-$_realver.tar.gz + irqbalance-2011-08-09.patch + irqbalance.conf.d + irqbalance.rc.d + irqbalance.service) +md5sums=('6f246481d6295bcb9a79751c03207c96' + '49a5669fc3eb452a5d24abec887f0a6a' + '336c1ee99818f9ecda1687e34c69fd6b' + 'fb82fc5d267d39110baf720d81282a7c' + '9e82dc471128117982a8dd0c4bd5f246') + +build() { + cd "$srcdir/$pkgname-$_realver" + patch -Np1 < ../irqbalance-2011-08-09.patch + autoreconf -fi + ./configure --prefix=/usr + make +} + +package() { + cd "$srcdir/$pkgname-$_realver" + make install DESTDIR="$pkgdir" + install -D -m644 ../irqbalance.conf.d "$pkgdir"/etc/conf.d/irqbalance + install -D -m755 ../irqbalance.rc.d "$pkgdir"/etc/rc.d/irqbalance + install -D -m644 ../irqbalance.service "$pkgdir"/usr/lib/systemd/system/irqbalance.service +} diff --git a/testing/irqbalance/irqbalance-2011-08-09.patch b/testing/irqbalance/irqbalance-2011-08-09.patch new file mode 100644 index 000000000..fcdb8bdbf --- /dev/null +++ b/testing/irqbalance/irqbalance-2011-08-09.patch @@ -0,0 +1,1584 @@ +diff --git a/ChangeLog b/ChangeLog +deleted file mode 100644 +index f5e9428..0000000 +--- a/ChangeLog ++++ /dev/null +@@ -1,3 +0,0 @@ +-This is all tracked in the SVN repo. This file is just here to keep the +-autotools from complaining +- +diff --git a/Makefile.am b/Makefile.am +index 9847232..188e34f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -22,17 +22,17 @@ + + AUTOMAKE_OPTIONS = no-dependencies + ACLOCAL_AMFLAGS = -I m4 +-EXTRA_DIST = README INSTALL COPYING autogen.sh m4/cap-ng.m4 misc/irqbalance.service +- ++EXTRA_DIST = INSTALL COPYING autogen.sh misc/irqbalance.service ++ + INCLUDES = -I${top_srcdir} +-LIBS = $(CAPNG_LDADD) $(GLIB_LIBS) @LIBS@ +-AM_CFLAGS = $(GLIB_CFLAGS) ++AM_CFLAGS = $(LIBCAP_NG_CFLAGS) $(GLIB_CFLAGS) + AM_CPPFLAGS = -W -Wall -Wshadow -Wformat -Wundef -D_GNU_SOURCE + noinst_HEADERS = bitmap.h constants.h cpumask.h irqbalance.h non-atomic.h \ + types.h + sbin_PROGRAMS = irqbalance + irqbalance_SOURCES = activate.c bitmap.c classify.c cputree.c irqbalance.c \ +- irqlist.c numa.c placement.c powermode.c procinterrupts.c ++ irqlist.c numa.c placement.c procinterrupts.c ++irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB_LIBS) + dist_man_MANS = irqbalance.1 + + CONFIG_CLEAN_FILES = debug*.list config/* +@@ -40,3 +40,6 @@ clean-generic: + rm -rf autom4te*.cache + rm -f *.rej *.orig *~ + ++if LOCAL_GLIB ++SUBDIRS = glib-local ++endif +diff --git a/NEWS b/NEWS +deleted file mode 100644 +index 7cc0277..0000000 +--- a/NEWS ++++ /dev/null +@@ -1 +0,0 @@ +-No news currently +diff --git a/README b/README +deleted file mode 100644 +index e69de29..0000000 +diff --git a/activate.c b/activate.c +index 292c44a..02fc8dc 100644 +--- a/activate.c ++++ b/activate.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhorman@tuxdriver.com> + * + * This file is part of irqbalance + * +@@ -31,34 +32,63 @@ + + #include "irqbalance.h" + ++static int check_affinity(struct irq_info *info, cpumask_t applied_mask) ++{ ++ cpumask_t current_mask; ++ char buf[PATH_MAX]; ++ char *line = NULL; ++ size_t size = 0; ++ FILE *file; ++ ++ sprintf(buf, "/proc/irq/%i/smp_affinity", info->irq); ++ file = fopen(buf, "r"); ++ if (!file) ++ return 1; ++ if (getline(&line, &size, file)==0) { ++ free(line); ++ fclose(file); ++ return 1; ++ } ++ cpumask_parse_user(line, strlen(line), current_mask); ++ fclose(file); ++ free(line); ++ ++ return cpus_equal(applied_mask, current_mask); ++} + + static void activate_mapping(struct irq_info *info, void *data __attribute__((unused))) + { + char buf[PATH_MAX]; + FILE *file; + cpumask_t applied_mask; ++ int valid_mask = 0; ++ ++ if ((hint_policy == HINT_POLICY_EXACT) && ++ (!cpus_empty(info->affinity_hint))) { ++ applied_mask = info->affinity_hint; ++ valid_mask = 1; ++ } else if (info->assigned_obj) { ++ applied_mask = info->assigned_obj->mask; ++ valid_mask = 1; ++ if ((hint_policy == HINT_POLICY_SUBSET) && ++ (!cpus_empty(info->affinity_hint))) ++ cpus_and(applied_mask, applied_mask, info->affinity_hint); ++ } + + /* + * only activate mappings for irqs that have moved + */ +- if (!info->moved) ++ if (!info->moved && (!valid_mask || check_affinity(info, applied_mask))) + return; + + if (!info->assigned_obj) + return; + +- + sprintf(buf, "/proc/irq/%i/smp_affinity", info->irq); + file = fopen(buf, "w"); + if (!file) + return; + +- if ((hint_policy == HINT_POLICY_EXACT) && +- (!cpus_empty(info->affinity_hint))) +- applied_mask = info->affinity_hint; +- else +- applied_mask = info->assigned_obj->mask; +- + cpumask_scnprintf(buf, PATH_MAX, applied_mask); + fprintf(file, "%s", buf); + fclose(file); +diff --git a/autogen.sh b/autogen.sh +index 5ad9f14..b792e8b 100755 +--- a/autogen.sh ++++ b/autogen.sh +@@ -1,4 +1,5 @@ + #! /bin/sh + set -x -e ++mkdir -p m4 + # --no-recursive is available only in recent autoconf versions + autoreconf -fv --install +diff --git a/classify.c b/classify.c +index 124dab0..05b3bfb 100644 +--- a/classify.c ++++ b/classify.c +@@ -52,6 +52,8 @@ static short class_codes[MAX_CLASS] = { + }; + + static GList *interrupts_db; ++static GList *new_irq_list; ++static GList *banned_irqs; + + #define SYSDEV_DIR "/sys/bus/pci/devices" + +@@ -63,6 +65,30 @@ static gint compare_ints(gconstpointer a, gconstpointer b) + return ai->irq - bi->irq; + } + ++void add_banned_irq(int irq) ++{ ++ struct irq_info find, *new; ++ GList *entry; ++ ++ find.irq = irq; ++ entry = g_list_find_custom(banned_irqs, &find, compare_ints); ++ if (entry) ++ return; ++ ++ new = calloc(sizeof(struct irq_info), 1); ++ if (!new) { ++ if (debug_mode) ++ printf("No memory to ban irq %d\n", irq); ++ return; ++ } ++ ++ new->irq = irq; ++ ++ banned_irqs = g_list_append(banned_irqs, new); ++ return; ++} ++ ++ + /* + * Inserts an irq_info struct into the intterupts_db list + * devpath points to the device directory in sysfs for the +@@ -90,6 +116,13 @@ static struct irq_info *add_one_irq_to_db(const char *devpath, int irq) + return NULL; + } + ++ entry = g_list_find_custom(banned_irqs, &find, compare_ints); ++ if (entry) { ++ if (debug_mode) ++ printf("SKIPPING BANNED IRQ %d\n", irq); ++ return NULL; ++ } ++ + new = calloc(sizeof(struct irq_info), 1); + if (!new) + return NULL; +@@ -175,6 +208,43 @@ out: + return new; + } + ++static int check_for_irq_ban(char *path, int irq) ++{ ++ char *cmd; ++ int rc; ++ ++ if (!banscript) ++ return 0; ++ ++ cmd = alloca(strlen(path)+strlen(banscript)+32); ++ if (!cmd) ++ return 0; ++ ++ sprintf(cmd, "%s %s %d",banscript, path, irq); ++ rc = system(cmd); ++ ++ /* ++ * The system command itself failed ++ */ ++ if (rc == -1) { ++ if (debug_mode) ++ printf("%s failed, please check the --banscript option\n", cmd); ++ else ++ syslog(LOG_INFO, "%s failed, please check the --banscript option\n", cmd); ++ return 0; ++ } ++ ++ if (WEXITSTATUS(rc)) { ++ if (debug_mode) ++ printf("irq %d is baned by %s\n", irq, banscript); ++ else ++ syslog(LOG_INFO, "irq %d is baned by %s\n", irq, banscript); ++ return 1; ++ } ++ return 0; ++ ++} ++ + /* + * Figures out which interrupt(s) relate to the device we're looking at in dirname + */ +@@ -199,6 +269,10 @@ static void build_one_dev_entry(const char *dirname) + irqnum = strtol(entry->d_name, NULL, 10); + if (irqnum) { + sprintf(path, "%s/%s", SYSDEV_DIR, dirname); ++ if (check_for_irq_ban(path, irqnum)) { ++ add_banned_irq(irqnum); ++ continue; ++ } + new = add_one_irq_to_db(path, irqnum); + if (!new) + continue; +@@ -221,6 +295,11 @@ static void build_one_dev_entry(const char *dirname) + */ + if (irqnum) { + sprintf(path, "%s/%s", SYSDEV_DIR, dirname); ++ if (check_for_irq_ban(path, irqnum)) { ++ add_banned_irq(irqnum); ++ goto done; ++ } ++ + new = add_one_irq_to_db(path, irqnum); + if (!new) + goto done; +@@ -248,6 +327,8 @@ void rebuild_irq_db(void) + { + DIR *devdir = opendir(SYSDEV_DIR); + struct dirent *entry; ++ GList *gentry; ++ struct irq_info *ninfo, *iinfo; + + free_irq_db(); + +@@ -263,22 +344,46 @@ void rebuild_irq_db(void) + build_one_dev_entry(entry->d_name); + + } while (entry != NULL); ++ + closedir(devdir); ++ ++ if (!new_irq_list) ++ return; ++ gentry = g_list_first(new_irq_list); ++ while(gentry) { ++ ninfo = gentry->data; ++ iinfo = get_irq_info(ninfo->irq); ++ new_irq_list = g_list_remove(gentry, ninfo); ++ if (!iinfo) { ++ if (debug_mode) ++ printf("Adding untracked IRQ %d to database\n", ninfo->irq); ++ interrupts_db = g_list_append(interrupts_db, ninfo); ++ } else ++ free(ninfo); ++ ++ gentry = g_list_first(new_irq_list); ++ } ++ g_list_free(new_irq_list); ++ new_irq_list = NULL; ++ + } + +-struct irq_info *add_misc_irq(int irq) ++struct irq_info *add_new_irq(int irq) + { +- struct irq_info *new; ++ struct irq_info *new, *nnew; + + new = calloc(sizeof(struct irq_info), 1); +- if (!new) ++ nnew = calloc(sizeof(struct irq_info), 1); ++ if (!new || !nnew) + return NULL; + + new->irq = irq; + new->type = IRQ_TYPE_LEGACY; + new->class = IRQ_OTHER; + new->numa_node = get_numa_node(-1); ++ memcpy(nnew, new, sizeof(struct irq_info)); + interrupts_db = g_list_append(interrupts_db, new); ++ new_irq_list = g_list_append(new_irq_list, nnew); + return new; + } + +@@ -307,7 +412,7 @@ struct irq_info *get_irq_info(int irq) + void migrate_irq(GList **from, GList **to, struct irq_info *info) + { + GList *entry; +- struct irq_info find, *tmp;; ++ struct irq_info find, *tmp; + + find.irq = info->irq; + entry = g_list_find_custom(*from, &find, compare_ints); +@@ -325,18 +430,9 @@ static gint sort_irqs(gconstpointer A, gconstpointer B) + a = (struct irq_info*)A; + b = (struct irq_info*)B; + +- if (a->class < b->class) +- return 1; +- if (a->class > b->class) +- return -1; +- if (a->load < b->load) +- return 1; +- if (a->load > b->load) +- return -1; +- if (a<b) ++ if (a->class < b->class || a->load < b->load || a < b) + return 1; + return -1; +- + } + + void sort_irq_list(GList **list) +diff --git a/configure.ac b/configure.ac +index eed55ba..1230d66 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,49 +1,12 @@ +-dnl +-define([AC_INIT_NOTICE], +-[### Generated automatically using autoconf version] AC_ACVERSION [ +-### Copyright 2009 Steve Grubb <sgrubb@redhat.com> +-### +-### Permission is hereby granted, free of charge, to any person obtaining a +-### copy of this software and associated documentation files (the "Software"), +-### to deal in the Software without restriction, including without limitation +-### the rights to use, copy, modify, merge, publish, distribute, sublicense, +-### and/or sell copies of the Software, and to permit persons to whom the +-### Software is furnished to do so, subject to the following conditions: +-### +-### The above copyright notice and this permission notice shall be included +-### in all copies or substantial portions of the Software. +-### +-### THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +-### IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +-### FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +-### THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +-### OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +-### ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +-### OTHER DEALINGS IN THE SOFTWARE. +-### +-### For usage, run `./configure --help' +-### For more detailed information on installation, read the file `INSTALL'. +-### +-### If configuration succeeds, status is in the file `config.status'. +-### A log of configuration tests is in `config.log'. +-]) +- +-AC_REVISION($Revision: 1.3 $)dnl + AC_INIT(irqbalance,1.0.3) + AC_PREREQ(2.12)dnl + AM_CONFIG_HEADER(config.h) + +-echo Configuring irqbalance $VERSION +- + AC_CONFIG_MACRO_DIR([m4]) +-AC_CANONICAL_TARGET +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([foreign]) + AM_PROG_LIBTOOL + AC_SUBST(LIBTOOL_DEPS) + +-AC_MSG_NOTICE() +-AC_MSG_NOTICE([Checking for programs]) +- + AC_PROG_CC + AC_PROG_INSTALL + AC_PROG_AWK +@@ -55,9 +18,6 @@ AS_IF([test "$enable_numa" = "no"],[ + ac_cv_lib_numa_numa_available=no + ]) + +-AC_MSG_NOTICE +-AC_MSG_NOTICE([echo Checking for header files]) +- + AC_HEADER_STDC + AC_CHECK_HEADERS([numa.h]) + +@@ -70,10 +30,57 @@ AC_C_CONST + AC_C_INLINE + AM_PROG_CC_C_O + +-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28]) +-LIBCAP_NG_PATH ++AC_ARG_WITH([glib2], ++ [AS_HELP_STRING([--without-glib2], ++ [Don't use system glib2 library. Use local implementation instead.])], ++ [], ++ [with_glib2=check]) ++ ++local_glib2= ++AS_IF( ++ [test "x$with_glib2" = xyes], ++ [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28])], ++ ++ [test "x$with_glib2" = xno], ++ [local_glib2="yes"], ++ ++ [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28], [], [local_glib2="yes"])] ++) ++ ++AS_IF( ++ [test "x$local_glib2" = xyes], ++ [ ++ GLIB_CFLAGS=-I./glib-local ++ GLIB_LIBS=glib-local/libglib.a ++ AC_SUBST(GLIB_CFLAGS) ++ AC_SUBST(GLIB_LIBS) ++ AC_MSG_WARN(Using locale implementation of GList functions) ++ ] ++) ++ ++AM_CONDITIONAL([LOCAL_GLIB], [test "x$local_glib2" = "xyes"]) ++ ++AC_ARG_WITH([libcap-ng], ++ AS_HELP_STRING([libcap-ng], [Add libcap-ng-support @<:@default=auto@:>@])) ++ ++AS_IF( ++ [test "x$libcap_ng" != "xno"], ++ [ ++ PKG_CHECK_MODULES([LIBCAP_NG], [libcap-ng], ++ [AC_DEFINE(HAVE_LIBCAP_NG,1,[libcap-ng support])], ++ [ ++ AS_IF( ++ [test "x$libcap_ng" = "xyes"], ++ [ ++ AC_MSG_ERROR([libcap-ng not found]) ++ ] ++ ) ++ ] ++ ) ++ ] ++) + +-AC_OUTPUT(Makefile) ++AC_OUTPUT(Makefile glib-local/Makefile) + + AC_MSG_NOTICE() + AC_MSG_NOTICE([irqbalance Version: $VERSION]) +diff --git a/cputree.c b/cputree.c +index af4fd3a..9568967 100644 +--- a/cputree.c ++++ b/cputree.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhorman@tuxdriver.com> + * + * This file is part of irqbalance + * +diff --git a/glib-local/Makefile.am b/glib-local/Makefile.am +new file mode 100644 +index 0000000..336b56e +--- /dev/null ++++ b/glib-local/Makefile.am +@@ -0,0 +1,8 @@ ++## Process this file with automake to produce Makefile.in ++noinst_LIBRARIES = libglib.a ++ ++libglib_a_SOURCES = glist.c ++ ++libglib_a_CFLAGS = @GLIB_CFLAGS@ ++ ++noinst_HEADERS = glib.h glist.h +diff --git a/glib-local/glib.h b/glib-local/glib.h +new file mode 100644 +index 0000000..5874892 +--- /dev/null ++++ b/glib-local/glib.h +@@ -0,0 +1 @@ ++#include <glist.h> +diff --git a/glib-local/glist.c b/glib-local/glist.c +new file mode 100644 +index 0000000..6fa1761 +--- /dev/null ++++ b/glib-local/glist.c +@@ -0,0 +1,381 @@ ++#include <stdlib.h> ++ ++#include "glist.h" ++ ++/** ++ * g_list_free: ++ * @list: a #GList ++ * ++ * Frees all of the memory used by a #GList. ++ * The freed elements are returned to the slice allocator. ++ * ++ * <note><para> ++ * If list elements contain dynamically-allocated memory, ++ * you should either use g_list_free_full() or free them manually ++ * first. ++ * </para></note> ++ */ ++void ++g_list_free (GList *list) ++{ ++ GList *l = list; ++ ++ while(l) { ++ GList *tmp = l->next; ++ free(l); ++ l = tmp; ++ } ++} ++ ++/** ++ * g_list_last: ++ * @list: a #GList ++ * ++ * Gets the last element in a #GList. ++ * ++ * Returns: the last element in the #GList, ++ * or %NULL if the #GList has no elements ++ */ ++GList* ++g_list_last (GList *list) ++{ ++ if (list) ++ { ++ while (list->next) ++ list = list->next; ++ } ++ ++ return list; ++} ++ ++/** ++ * g_list_append: ++ * @list: a pointer to a #GList ++ * @data: the data for the new element ++ * ++ * Adds a new element on to the end of the list. ++ * ++ * <note><para> ++ * The return value is the new start of the list, which ++ * may have changed, so make sure you store the new value. ++ * </para></note> ++ * ++ * <note><para> ++ * Note that g_list_append() has to traverse the entire list ++ * to find the end, which is inefficient when adding multiple ++ * elements. A common idiom to avoid the inefficiency is to prepend ++ * the elements and reverse the list when all elements have been added. ++ * </para></note> ++ * ++ * |[ ++ * /* Notice that these are initialized to the empty list. */ ++ * GList *list = NULL, *number_list = NULL; ++ * ++ * /* This is a list of strings. */ ++ * list = g_list_append (list, "first"); ++ * list = g_list_append (list, "second"); ++ * ++ * /* This is a list of integers. */ ++ * number_list = g_list_append (number_list, GINT_TO_POINTER (27)); ++ * number_list = g_list_append (number_list, GINT_TO_POINTER (14)); ++ * ]| ++ * ++ * Returns: the new start of the #GList ++ */ ++GList* ++g_list_append (GList *list, ++ gpointer data) ++{ ++ GList *new_list; ++ GList *last; ++ ++ new_list = malloc(sizeof(*new_list)); ++ new_list->data = data; ++ new_list->next = NULL; ++ ++ if (list) ++ { ++ last = g_list_last (list); ++ /* g_assert (last != NULL); */ ++ last->next = new_list; ++ new_list->prev = last; ++ ++ return list; ++ } ++ else ++ { ++ new_list->prev = NULL; ++ return new_list; ++ } ++} ++ ++static inline GList* ++_g_list_remove_link (GList *list, ++ GList *link) ++{ ++ if (link) ++ { ++ if (link->prev) ++ link->prev->next = link->next; ++ if (link->next) ++ link->next->prev = link->prev; ++ ++ if (link == list) ++ list = list->next; ++ ++ link->next = NULL; ++ link->prev = NULL; ++ } ++ ++ return list; ++} ++ ++/** ++ * g_list_delete_link: ++ * @list: a #GList ++ * @link_: node to delete from @list ++ * ++ * Removes the node link_ from the list and frees it. ++ * Compare this to g_list_remove_link() which removes the node ++ * without freeing it. ++ * ++ * Returns: the new head of @list ++ */ ++GList* ++g_list_delete_link (GList *list, ++ GList *link_) ++{ ++ list = _g_list_remove_link (list, link_); ++ free (link_); ++ ++ return list; ++} ++ ++/** ++ * g_list_first: ++ * @list: a #GList ++ * ++ * Gets the first element in a #GList. ++ * ++ * Returns: the first element in the #GList, ++ * or %NULL if the #GList has no elements ++ */ ++GList* ++g_list_first (GList *list) ++{ ++ if (list) ++ { ++ while (list->prev) ++ list = list->prev; ++ } ++ ++ return list; ++} ++ ++static GList * ++g_list_sort_merge (GList *l1, ++ GList *l2, ++ GFunc compare_func, ++ gpointer user_data) ++{ ++ GList list, *l, *lprev; ++ gint cmp; ++ ++ l = &list; ++ lprev = NULL; ++ ++ while (l1 && l2) ++ { ++ cmp = ((GCompareDataFunc) compare_func) (l1->data, l2->data, user_data); ++ ++ if (cmp <= 0) ++ { ++ l->next = l1; ++ l1 = l1->next; ++ } ++ else ++ { ++ l->next = l2; ++ l2 = l2->next; ++ } ++ l = l->next; ++ l->prev = lprev; ++ lprev = l; ++ } ++ l->next = l1 ? l1 : l2; ++ l->next->prev = l; ++ ++ return list.next; ++} ++ ++static GList* ++g_list_sort_real (GList *list, ++ GFunc compare_func, ++ gpointer user_data) ++{ ++ GList *l1, *l2; ++ ++ if (!list) ++ return NULL; ++ if (!list->next) ++ return list; ++ ++ l1 = list; ++ l2 = list->next; ++ ++ while ((l2 = l2->next) != NULL) ++ { ++ if ((l2 = l2->next) == NULL) ++ break; ++ l1 = l1->next; ++ } ++ l2 = l1->next; ++ l1->next = NULL; ++ ++ return g_list_sort_merge (g_list_sort_real (list, compare_func, user_data), ++ g_list_sort_real (l2, compare_func, user_data), ++ compare_func, ++ user_data); ++} ++ ++/** ++ * g_list_sort: ++ * @list: a #GList ++ * @compare_func: the comparison function used to sort the #GList. ++ * This function is passed the data from 2 elements of the #GList ++ * and should return 0 if they are equal, a negative value if the ++ * first element comes before the second, or a positive value if ++ * the first element comes after the second. ++ * ++ * Sorts a #GList using the given comparison function. ++ * ++ * Returns: the start of the sorted #GList ++ */ ++/** ++ * GCompareFunc: ++ * @a: a value. ++ * @b: a value to compare with. ++ * @Returns: negative value if @a < @b; zero if @a = @b; positive ++ * value if @a > @b. ++ * ++ * Specifies the type of a comparison function used to compare two ++ * values. The function should return a negative integer if the first ++ * value comes before the second, 0 if they are equal, or a positive ++ * integer if the first value comes after the second. ++ **/ ++GList * ++g_list_sort (GList *list, ++ GCompareFunc compare_func) ++{ ++ return g_list_sort_real (list, (GFunc) compare_func, NULL); ++ ++} ++ ++/** ++ * g_list_length: ++ * @list: a #GList ++ * ++ * Gets the number of elements in a #GList. ++ * ++ * <note><para> ++ * This function iterates over the whole list to ++ * count its elements. ++ * </para></note> ++ * ++ * Returns: the number of elements in the #GList ++ */ ++guint ++g_list_length (GList *list) ++{ ++ guint length; ++ ++ length = 0; ++ while (list) ++ { ++ length++; ++ list = list->next; ++ } ++ ++ return length; ++} ++ ++/** ++ * g_list_foreach: ++ * @list: a #GList ++ * @func: the function to call with each element's data ++ * @user_data: user data to pass to the function ++ * ++ * Calls a function for each element of a #GList. ++ */ ++/** ++ * GFunc: ++ * @data: the element's data. ++ * @user_data: user data passed to g_list_foreach() or ++ * g_slist_foreach(). ++ * ++ * Specifies the type of functions passed to g_list_foreach() and ++ * g_slist_foreach(). ++ **/ ++void ++g_list_foreach (GList *list, ++ GFunc func, ++ gpointer user_data) ++{ ++ while (list) ++ { ++ GList *next = list->next; ++ (*func) (list->data, user_data); ++ list = next; ++ } ++} ++ ++/** ++ * g_list_free_full: ++ * @list: a pointer to a #GList ++ * @free_func: the function to be called to free each element's data ++ * ++ * Convenience method, which frees all the memory used by a #GList, and ++ * calls the specified destroy function on every element's data. ++ * ++ * Since: 2.28 ++ */ ++void ++g_list_free_full (GList *list, ++ GDestroyNotify free_func) ++{ ++ g_list_foreach (list, (GFunc) free_func, NULL); ++ g_list_free (list); ++} ++ ++/** ++ * g_list_find_custom: ++ * @list: a #GList ++ * @data: user data passed to the function ++ * @func: the function to call for each element. ++ * It should return 0 when the desired element is found ++ * ++ * Finds an element in a #GList, using a supplied function to ++ * find the desired element. It iterates over the list, calling ++ * the given function which should return 0 when the desired ++ * element is found. The function takes two #gconstpointer arguments, ++ * the #GList element's data as the first argument and the ++ * given user data. ++ * ++ * Returns: the found #GList element, or %NULL if it is not found ++ */ ++GList* ++g_list_find_custom (GList *list, ++ gconstpointer data, ++ GCompareFunc func) ++{ ++ g_return_val_if_fail (func != NULL, list); ++ ++ while (list) ++ { ++ if (! func (list->data, data)) ++ return list; ++ list = list->next; ++ } ++ ++ return NULL; ++} +diff --git a/glib-local/glist.h b/glib-local/glist.h +new file mode 100644 +index 0000000..47f2cfe +--- /dev/null ++++ b/glib-local/glist.h +@@ -0,0 +1,56 @@ ++#ifndef __G_LIST_H__ ++#define __G_LIST_H__ ++ ++typedef int gint; ++typedef unsigned int guint; ++typedef void* gpointer; ++typedef const void *gconstpointer; ++typedef gint (*GCompareFunc) (gconstpointer a, ++ gconstpointer b); ++typedef gint (*GCompareDataFunc) (gconstpointer a, ++ gconstpointer b, ++ gpointer user_data); ++typedef void (*GFunc) (gpointer data, ++ gpointer user_data); ++typedef void (*GDestroyNotify) (gpointer data); ++ ++struct _GList; ++typedef struct _GList GList; ++ ++struct _GList ++{ ++ gpointer data; ++ GList *next; ++ GList *prev; ++}; ++ ++/* Doubly linked lists ++ */ ++void g_list_free (GList *list); ++GList* g_list_append (GList *list, ++ gpointer data); ++GList* g_list_delete_link (GList *list, ++ GList *link_); ++GList* g_list_first (GList *list); ++GList* g_list_sort (GList *list, ++ GCompareFunc compare_func); ++guint g_list_length (GList *list); ++void g_list_foreach (GList *list, ++ GFunc func, ++ gpointer user_data); ++void g_list_free_full (GList *list, ++ GDestroyNotify free_func); ++GList* g_list_find_custom (GList *list, ++ gconstpointer data, ++ GCompareFunc func); ++ ++#define g_list_previous(list) ((list) ? (((GList *)(list))->prev) : NULL) ++#define g_list_next(list) ((list) ? (((GList *)(list))->next) : NULL) ++ ++#define g_return_val_if_fail(expr,val) do { \ ++ if (expr) { } else \ ++ { \ ++ return (val); \ ++ } } while(0); ++ ++#endif /* __G_LIST_H__ */ +diff --git a/irqbalance.1 b/irqbalance.1 +index 55fc15f..20105bc 100644 +--- a/irqbalance.1 ++++ b/irqbalance.1 +@@ -39,7 +39,11 @@ Causes irqbalance to be run once, after which the daemon exits + .TP + + .B --debug +-Causes irqbalance to run in the foreground and extra debug information to be printed ++Causes irqbalance to print extra debug information. Implies --foreground ++ ++.TP ++.B --foreground ++Causes irqbalance to run in the foreground (without --debug) + + .TP + .B --hintpolicy=[exact | subset | ignore] +@@ -62,6 +66,30 @@ average cpu softirq workload, and no cpus are more than 1 standard deviation + above (and have more than 1 irq assigned to them), attempt to place 1 cpu in + powersave mode. In powersave mode, a cpu will not have any irqs balanced to it, + in an effort to prevent that cpu from waking up without need. ++ ++.TP ++.B --banirq=<irqnum> ++Add the specified irq list to the set of banned irqs. irqbalance will not affect ++the affinity of any irqs on the banned list, allowing them to be specified ++manually. This option is addative and can be specified multiple times ++ ++.TP ++.B --banscript=<script> ++Execute the specified script for each irq that is discovered, passing the sysfs ++path to the associated device as the first argument, and the irq vector as the ++second. An exit value of 0 tells irqbalance that this interrupt should balanced ++and managed as a normal irq, while a non-zero exit code indicates this irq ++should be ignored by irqbalance completely (see --banirq above). Use of this ++script provides users the ability to dynamically select which irqs get exluded ++from balancing, and provides an opportunity for manual affinity setting in one ++single code point. ++ ++.TP ++.B --pid=<file> ++Have irqbalance write its process id to the specified file. By default no ++pidfile is written. The written pidfile is automatically unlinked when ++irqbalance exits. ++ + .SH "ENVIRONMENT VARIABLES" + .TP + .B IRQBALANCE_ONESHOT +@@ -75,9 +103,10 @@ Same as --debug + .B IRQBALANCE_BANNED_CPUS + Provides a mask of cpus which irqbalance should ignore and never assign interrupts to + ++.SH "SIGNALS" + .TP +-.B IRQBALANCE_BANNED_INTERRUPTS +-A list of space delimited IRQ numbers that irqbalance should not touch ++.B SIGHUP ++Forces a rescan of the available irqs and system topology + + .SH "Homepage" + http://code.google.com/p/irqbalance +diff --git a/irqbalance.c b/irqbalance.c +index 99c5db7..fbe6ac6 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhorman@tuxdriver.com> + * + * This file is part of irqbalance + * +@@ -27,6 +28,10 @@ + #include <syslog.h> + #include <unistd.h> + #include <signal.h> ++#include <time.h> ++#include <sys/types.h> ++#include <sys/stat.h> ++#include <fcntl.h> + #ifdef HAVE_GETOPT_LONG + #include <getopt.h> + #endif +@@ -39,12 +44,15 @@ + volatile int keep_going = 1; + int one_shot_mode; + int debug_mode; ++int foreground_mode; + int numa_avail; +-int need_cpu_rescan; ++int need_rescan; + extern cpumask_t banned_cpus; + enum hp_e hint_policy = HINT_POLICY_SUBSET; + unsigned long power_thresh = ULONG_MAX; + unsigned long long cycle_count = 0; ++char *pidfile = NULL; ++char *banscript = NULL; + + void sleep_approx(int seconds) + { +@@ -64,32 +72,45 @@ void sleep_approx(int seconds) + struct option lopts[] = { + {"oneshot", 0, NULL, 'o'}, + {"debug", 0, NULL, 'd'}, ++ {"foreground", 0, NULL, 'f'}, + {"hintpolicy", 1, NULL, 'h'}, + {"powerthresh", 1, NULL, 'p'}, ++ {"banirq", 1 , NULL, 'i'}, ++ {"banscript", 1, NULL, 'b'}, ++ {"pid", 1, NULL, 's'}, + {0, 0, 0, 0} + }; + + static void usage(void) + { +- printf("irqbalance [--oneshot | -o] [--debug | -d] [--hintpolicy= | -h [exact|subset|ignore]]\n"); +- printf(" [--powerthresh= | -p <off> | <n>]\n"); ++ printf("irqbalance [--oneshot | -o] [--debug | -d] [--foreground | -f] [--hintpolicy= | -h [exact|subset|ignore]]\n"); ++ printf(" [--powerthresh= | -p <off> | <n>] [--banirq= | -i <n>]\n"); + } + + static void parse_command_line(int argc, char **argv) + { + int opt; + int longind; ++ unsigned long val; + + while ((opt = getopt_long(argc, argv, +- "odh:p:", ++ "odfh:i:p:s:", + lopts, &longind)) != -1) { + + switch(opt) { + case '?': + usage(); + exit(1); ++ break; ++ case 'b': ++ banscript = strdup(optarg); ++ break; + case 'd': + debug_mode=1; ++ foreground_mode=1; ++ break; ++ case 'f': ++ foreground_mode=1; + break; + case 'h': + if (!strncmp(optarg, "exact", strlen(optarg))) +@@ -103,6 +124,14 @@ static void parse_command_line(int argc, char **argv) + exit(1); + } + break; ++ case 'i': ++ val = strtoull(optarg, NULL, 10); ++ if (val == ULONG_MAX) { ++ usage(); ++ exit(1); ++ } ++ add_banned_irq((int)val); ++ break; + case 'p': + if (!strncmp(optarg, "off", strlen(optarg))) + power_thresh = ULONG_MAX; +@@ -117,6 +146,9 @@ static void parse_command_line(int argc, char **argv) + case 'o': + one_shot_mode=1; + break; ++ case 's': ++ pidfile = optarg; ++ break; + } + } + } +@@ -172,18 +204,34 @@ static void handler(int signum) + keep_going = 0; + } + ++static void force_rescan(int signum) ++{ ++ if (cycle_count) ++ need_rescan = 1; ++} ++ + int main(int argc, char** argv) + { +- struct sigaction action; ++ struct sigaction action, hupaction; + + #ifdef HAVE_GETOPT_LONG + parse_command_line(argc, argv); + #else +- if (argc>1 && strstr(argv[1],"--debug")) ++ if (argc>1 && strstr(argv[1],"--debug")) { + debug_mode=1; ++ foreground_mode=1; ++ } ++ if (argc>1 && strstr(argv[1],"--foreground")) ++ foreground_mode=1; + if (argc>1 && strstr(argv[1],"--oneshot")) + one_shot_mode=1; + #endif ++ ++ /* ++ * Open the syslog connection ++ */ ++ openlog(argv[0], 0, LOG_DAEMON); ++ + if (getenv("IRQBALANCE_BANNED_CPUS")) { + cpumask_parse_user(getenv("IRQBALANCE_BANNED_CPUS"), strlen(getenv("IRQBALANCE_BANNED_CPUS")), banned_cpus); + } +@@ -212,17 +260,35 @@ int main(int argc, char** argv) + + + /* On single core UP systems irqbalance obviously has no work to do */ +- if (core_count<2) ++ if (core_count<2) { ++ char *msg = "Balaincing is ineffective on systems with a " ++ "single cache domain. Shutting down\n"; ++ ++ if (debug_mode) ++ printf("%s", msg); ++ else ++ syslog(LOG_INFO, "%s", msg); + exit(EXIT_SUCCESS); ++ } + /* On dual core/hyperthreading shared cache systems just do a one shot setup */ + if (cache_domain_count==1) + one_shot_mode = 1; + +- if (!debug_mode) ++ if (!foreground_mode) { ++ int pidfd = -1; + if (daemon(0,0)) + exit(EXIT_FAILURE); ++ /* Write pidfile */ ++ if (pidfile && (pidfd = open(pidfile, ++ O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, ++ S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) >= 0) { ++ char str[16]; ++ snprintf(str, sizeof(str), "%u\n", getpid()); ++ write(pidfd, str, strlen(str)); ++ close(pidfd); ++ } ++ } + +- openlog(argv[0], 0, LOG_DAEMON); + + #ifdef HAVE_LIBCAP_NG + // Drop capabilities +@@ -236,6 +302,11 @@ int main(int argc, char** argv) + parse_proc_interrupts(); + parse_proc_stat(); + ++ hupaction.sa_handler = force_rescan; ++ sigemptyset(&hupaction.sa_mask); ++ hupaction.sa_flags = 0; ++ sigaction(SIGHUP, &hupaction, NULL); ++ + while (keep_going) { + sleep_approx(SLEEP_INTERVAL); + if (debug_mode) +@@ -247,8 +318,8 @@ int main(int argc, char** argv) + parse_proc_stat(); + + /* cope with cpu hotplug -- detected during /proc/interrupts parsing */ +- if (need_cpu_rescan) { +- need_cpu_rescan = 0; ++ if (need_rescan) { ++ need_rescan = 0; + /* if there's a hotplug event we better turn off power mode for a bit until things settle */ + power_mode = 0; + if (debug_mode) +@@ -282,5 +353,10 @@ int main(int argc, char** argv) + + } + free_object_tree(); ++ ++ /* Remove pidfile */ ++ if (!foreground_mode && pidfile) ++ unlink(pidfile); ++ + return EXIT_SUCCESS; + } +diff --git a/irqbalance.h b/irqbalance.h +index 4e85325..e46f31f 100644 +--- a/irqbalance.h ++++ b/irqbalance.h +@@ -9,6 +9,7 @@ + #include <stdint.h> + #include <glib.h> + #include <syslog.h> ++#include <limits.h> + + #include "types.h" + #ifdef HAVE_NUMA_H +@@ -40,7 +41,6 @@ void dump_tree(void); + + void activate_mappings(void); + void account_for_nic_stats(void); +-void check_power_mode(void); + void clear_cpu_tree(void); + void pci_numa_scan(void); + +@@ -64,10 +64,11 @@ enum hp_e { + extern int debug_mode; + extern int one_shot_mode; + extern int power_mode; +-extern int need_cpu_rescan; ++extern int need_rescan; + extern enum hp_e hint_policy; + extern unsigned long long cycle_count; + extern unsigned long power_thresh; ++extern char *banscript; + + /* + * Numa node access routines +@@ -103,10 +104,11 @@ extern int get_cpu_count(void); + */ + extern void rebuild_irq_db(void); + extern void free_irq_db(void); ++extern void add_banned_irq(int irq); + extern void for_each_irq(GList *list, void (*cb)(struct irq_info *info, void *data), void *data); + extern struct irq_info *get_irq_info(int irq); + extern void migrate_irq(GList **from, GList **to, struct irq_info *info); +-extern struct irq_info *add_misc_irq(int irq); ++extern struct irq_info *add_new_irq(int irq); + #define irq_numa_node(irq) ((irq)->numa_node) + + +diff --git a/irqlist.c b/irqlist.c +index c29ee84..2523173 100644 +--- a/irqlist.c ++++ b/irqlist.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhorman@tuxdriver.com> + * + * This file is part of irqbalance + * +@@ -45,6 +46,7 @@ struct load_balance_info { + unsigned int num_within; + unsigned int num_over; + unsigned int num_under; ++ unsigned int num_powersave; + struct topo_obj *powersave; + }; + +@@ -106,13 +108,16 @@ static void migrate_overloaded_irqs(struct topo_obj *obj, void *data) + struct load_balance_info *info = data; + int deviation; + ++ if (obj->powersave_mode) ++ info->num_powersave++; ++ + /* + * Don't rebalance irqs on objects whos load is below the average + */ + if (obj->load <= info->avg_load) { + if ((obj->load + info->std_deviation) <= info->avg_load) { + info->num_under++; +- if (!info->powersave) ++ if (power_thresh != ULONG_MAX && !info->powersave) + if (!obj->powersave_mode) + info->powersave = obj; + } else +@@ -172,13 +177,13 @@ void update_migration_status(void) + { + struct load_balance_info info; + find_overloaded_objs(cpus, info); +- if (cycle_count > 5) { ++ if (power_thresh != ULONG_MAX && cycle_count > 5) { + if (!info.num_over && (info.num_under >= power_thresh) && info.powersave) { + syslog(LOG_INFO, "cpu %d entering powersave mode\n", info.powersave->number); + info.powersave->powersave_mode = 1; + if (g_list_length(info.powersave->interrupts) > 0) + for_each_irq(info.powersave->interrupts, force_irq_migration, NULL); +- } else if (info.num_over) { ++ } else if ((info.num_over) && (info.num_powersave)) { + syslog(LOG_INFO, "Load average increasing, re-enabling all cpus for irq balancing\n"); + for_each_object(cpus, clear_powersave_mode, NULL); + } +diff --git a/m4/cap-ng.m4 b/m4/cap-ng.m4 +deleted file mode 100644 +index 0024edc..0000000 +--- a/m4/cap-ng.m4 ++++ /dev/null +@@ -1,40 +0,0 @@ +-# libcap-ng.m4 - Checks for the libcap-ng support +-# Copyright (c) 2009 Steve Grubb sgrubb@redhat.com +-# +-AC_DEFUN([LIBCAP_NG_PATH], +-[ +- AC_ARG_WITH(libcap-ng, +- [ --with-libcap-ng=[auto/yes/no] Add Libcap-ng support [default=auto]],, +- with_libcap_ng=auto) +- +- # Check for Libcap-ng API +- # +- # libcap-ng detection +- +- if test x$with_libcap_ng = xno ; then +- have_libcap_ng=no; +- else +- # Start by checking for header file +- AC_CHECK_HEADER(cap-ng.h, capng_headers=yes, capng_headers=no) +- +- # See if we have libcap-ng library +- AC_CHECK_LIB(cap-ng, capng_clear, +- CAPNG_LDADD=-lcap-ng,) +- +- # Check results are usable +- if test x$with_libcap_ng = xyes -a x$CAPNG_LDADD = x ; then +- AC_MSG_ERROR(libcap-ng support was requested and the library was not found) +- fi +- if test x$CAPNG_LDADD != x -a $capng_headers = no ; then +- AC_MSG_ERROR(libcap-ng libraries found but headers are missing) +- fi +- fi +- AC_SUBST(CAPNG_LDADD) +- AC_MSG_CHECKING(whether to use libcap-ng) +- if test x$CAPNG_LDADD != x ; then +- AC_DEFINE(HAVE_LIBCAP_NG,1,[libcap-ng support]) +- AC_MSG_RESULT(yes) +- else +- AC_MSG_RESULT(no) +- fi +-]) +diff --git a/misc/irqbalance.env b/misc/irqbalance.env +new file mode 100644 +index 0000000..bd87e3d +--- /dev/null ++++ b/misc/irqbalance.env +@@ -0,0 +1,26 @@ ++# irqbalance is a daemon process that distributes interrupts across ++# CPUS on SMP systems. The default is to rebalance once every 10 ++# seconds. This is the environment file that is specified to systemd via the ++# EnvironmentFile key in the service unit file (or via whatever method the init ++# system you're using has. ++# ++# ONESHOT=yes ++# after starting, wait for a minute, then look at the interrupt ++# load and balance it once; after balancing exit and do not change ++# it again. ++#IRQBALANCE_ONESHOT= ++ ++# ++# IRQBALANCE_BANNED_CPUS ++# 64 bit bitmask which allows you to indicate which cpu's should ++# be skipped when reblancing irqs. Cpu numbers which have their ++# corresponding bits set to one in this mask will not have any ++# irq's assigned to them on rebalance ++# ++#IRQBALANCE_BANNED_CPUS= ++ ++# ++# IRQBALANCE_ARGS ++# append any args here to the irqbalance daemon as documented in the man page ++# ++#IRQBALANCE_ARGS= +diff --git a/misc/irqbalance.service b/misc/irqbalance.service +index f349616..3139a83 100644 +--- a/misc/irqbalance.service ++++ b/misc/irqbalance.service +@@ -3,9 +3,8 @@ Description=irqbalance daemon + After=syslog.target + + [Service] +-EnvironmentFile=/etc/sysconfig/irqbalance +-Type=forking +-ExecStart=/usr/sbin/irqbalance $ONESHOT ++EnvironmentFile=/path/to/irqbalance.env ++ExecStart=/usr/sbin/irqbalance --foreground $IRQBALANCE_ARGS + + [Install] + WantedBy=multi-user.target +diff --git a/numa.c b/numa.c +index 710ed67..96703bd 100644 +--- a/numa.c ++++ b/numa.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhorman@tuxdriver.com> + * + * This file is part of irqbalance + * +@@ -106,11 +107,11 @@ void build_numa_node_list(void) + static void free_numa_node(gpointer data) + { + struct topo_obj *obj = data; +- if (data == &unspecified_node) +- return; +- + g_list_free(obj->children); +- free(data); ++ g_list_free(obj->interrupts); ++ ++ if (data != &unspecified_node) ++ free(data); + } + + void free_numa_node_list(void) +diff --git a/placement.c b/placement.c +index 108ccc9..1172849 100644 +--- a/placement.c ++++ b/placement.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhoramn@tuxdriver.com> + * + * This file is part of irqbalance + * +@@ -48,7 +49,7 @@ static void find_best_object(struct topo_obj *d, void *data) + /* + * Don't consider the unspecified numa node here + */ +- if ((d->obj_type == OBJ_TYPE_NODE) && (d->number == -1)) ++ if (numa_avail && (d->obj_type == OBJ_TYPE_NODE) && (d->number == -1)) + return; + + /* +diff --git a/powermode.c b/powermode.c +deleted file mode 100644 +index 82ba490..0000000 +--- a/powermode.c ++++ /dev/null +@@ -1,34 +0,0 @@ +-/* +- * Copyright (C) 2006, Intel Corporation +- * +- * This file is part of irqbalance +- * +- * This program file 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; version 2 of the License. +- * +- * 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 in a file named COPYING; if not, write to the +- * Free Software Foundation, Inc., +- * 51 Franklin Street, Fifth Floor, +- * Boston, MA 02110-1301 USA +- */ +-#include "config.h" +-#include <stdio.h> +-#include <stdlib.h> +-#include <unistd.h> +-#include <stdint.h> +-#include <string.h> +- +-#include "irqbalance.h" +- +- +-void check_power_mode(void) +-{ +-} +- +diff --git a/procinterrupts.c b/procinterrupts.c +index 4d3b07b..431fffa 100644 +--- a/procinterrupts.c ++++ b/procinterrupts.c +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2006, Intel Corporation ++ * Copyright (C) 2012, Neil Horman <nhorman@tuxdriver.com> + * + * This file is part of irqbalance + * +@@ -32,6 +33,8 @@ + + #define LINESIZE 4096 + ++extern cpumask_t banned_cpus; ++ + static int proc_int_has_msi = 0; + static int msi_found_in_sysfs = 0; + +@@ -80,8 +83,12 @@ void parse_proc_interrupts(void) + c++; + number = strtoul(line, NULL, 10); + info = get_irq_info(number); +- if (!info) +- info = add_misc_irq(number); ++ if (!info) { ++ if (!cycle_count) ++ continue; ++ need_rescan = 1; ++ info = add_new_irq(number); ++ } + + count = 0; + cpunr = 0; +@@ -97,7 +104,7 @@ void parse_proc_interrupts(void) + cpunr++; + } + if (cpunr != core_count) +- need_cpu_rescan = 1; ++ need_rescan = 1; + + info->last_irq_count = info->irq_count; + info->irq_count = count; +@@ -217,6 +224,9 @@ void parse_proc_stat(void) + + cpunr = strtoul(&line[3], NULL, 10); + ++ if (cpu_isset(cpunr, banned_cpus)) ++ continue; ++ + rc = sscanf(line, "%*s %*d %*d %*d %*d %*d %d %d", &irq_load, &softirq_load); + if (rc < 2) + break; diff --git a/testing/irqbalance/irqbalance.conf.d b/testing/irqbalance/irqbalance.conf.d new file mode 100644 index 000000000..ef1bdfd75 --- /dev/null +++ b/testing/irqbalance/irqbalance.conf.d @@ -0,0 +1,6 @@ +# +# Settings for irqbalance daemon +# + +# one shot mode - set to 1 if you have Pentium 4 with HT +ONESHOT=0 diff --git a/testing/irqbalance/irqbalance.rc.d b/testing/irqbalance/irqbalance.rc.d new file mode 100644 index 000000000..987c26b51 --- /dev/null +++ b/testing/irqbalance/irqbalance.rc.d @@ -0,0 +1,46 @@ +#!/bin/bash + +# source application-specific settings +ONESHOT=0 +[ -f /etc/conf.d/irqbalance ] && . /etc/conf.d/irqbalance + +if [ "$ONESHOT" -ne 0 ]; then + ONESHOT_CMD="--oneshot" +fi + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/irqbalance` +case "$1" in + start) + stat_busy "Starting IRQ balancing" + [ -z "$PID" ] && /usr/sbin/irqbalance $ONESHOT_CMD + if [ $? -gt 0 ]; then + stat_fail + else + if [ "$ONESHOT" -eq 0 ]; then + add_daemon irqbalance + fi + stat_done + fi + ;; + stop) + stat_busy "Stopping IRQ balancing" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon irqbalance + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/testing/irqbalance/irqbalance.service b/testing/irqbalance/irqbalance.service new file mode 100644 index 000000000..372ac0aa4 --- /dev/null +++ b/testing/irqbalance/irqbalance.service @@ -0,0 +1,8 @@ +[Unit] +Description=CPU Interrupt Request Balancer + +[Service] +ExecStart=/usr/sbin/irqbalance --foreground + +[Install] +WantedBy=multi-user.target diff --git a/testing/memcached/PKGBUILD b/testing/memcached/PKGBUILD new file mode 100644 index 000000000..540073226 --- /dev/null +++ b/testing/memcached/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 165366 2012-08-16 14:41:50Z dan $ +# Maintainer: Dan McGee <dan@archlinux.org> +# Contributor: Michael Irwin <6d6469@gmail.com> + +pkgname=memcached +pkgver=1.4.14 +pkgrel=2 +pkgdesc="A distributed memory object caching system" +arch=(i686 x86_64) +url="http://memcached.org/" +license=('GPL') +depends=('libevent') +optdepends=('perl: for memcached-tool usage') +backup=('etc/conf.d/memcached') +install=memcached.install +source=(http://memcached.googlecode.com/files/$pkgname-$pkgver.tar.gz + memcached.conf + memcached.sh + memcached.service) +sha256sums=('f2e2ad8ee8d256f2c3748d7f741dcddfd0ab6bdece6fa1c18484e83f311156ef' + '17f66873b77e96c6706dcf13ab0aa8ddff94b2851366c787fc23e614dfc11f47' + '72efa639c5a39c7c14f07cc51731ebbf82299870d9cf31cf3aaa981bc084b4eb' + '453cad82bddb25fac43fd5cedc5702b9b6c6abaf7498e21445facf20f25f53a6') + +build() { + cd "$srcdir/$pkgname-$pkgver" + ./configure --prefix=/usr + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install + install -D -m 755 scripts/memcached-tool "$pkgdir"/usr/bin/memcached-tool + install -D -m 644 ../memcached.conf "$pkgdir"/etc/conf.d/memcached + install -D -m 755 ../memcached.sh "$pkgdir"/etc/rc.d/memcached + install -D -m 644 ../memcached.service "$pkgdir"/usr/lib/systemd/system/memcached.service +} diff --git a/testing/memcached/memcached.conf b/testing/memcached/memcached.conf new file mode 100644 index 000000000..4415e1a55 --- /dev/null +++ b/testing/memcached/memcached.conf @@ -0,0 +1,4 @@ +# user to run memcached as; also used for pid file ownership +MEMCACHED_USER="memcached" +# see 'memcached -h' for available options +MEMCACHED_ARGS="-l 127.0.0.1 -t 1" diff --git a/testing/memcached/memcached.install b/testing/memcached/memcached.install new file mode 100644 index 000000000..6009b713f --- /dev/null +++ b/testing/memcached/memcached.install @@ -0,0 +1,22 @@ +post_install() { + if ! getent group memcached >/dev/null; then + groupadd --system memcached + fi + if ! getent passwd memcached >/dev/null; then + useradd --system -c 'memcached user' -g memcached -d / -s /bin/bash memcached + passwd -l memcached >/dev/null + fi +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + if getent passwd memcached >/dev/null; then + userdel memcached + fi + if getent group memcached >/dev/null; then + groupdel memcached + fi +} diff --git a/testing/memcached/memcached.service b/testing/memcached/memcached.service new file mode 100644 index 000000000..c6e15fb7c --- /dev/null +++ b/testing/memcached/memcached.service @@ -0,0 +1,11 @@ +[Unit] +Description=Memcached Daemon +After=network.target + +[Service] +User=memcached +# Remove '-l 127.0.0.1' to listen on all addresses +ExecStart=/usr/bin/memcached -l 127.0.0.1 + +[Install] +WantedBy=multi-user.target diff --git a/testing/memcached/memcached.sh b/testing/memcached/memcached.sh new file mode 100644 index 000000000..9c9727507 --- /dev/null +++ b/testing/memcached/memcached.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/memcached + +PIDFILE='/var/run/memcached.pid' + +getpid() { + local pid + pid=$(cat $PIDFILE 2>/dev/null) + # if the process is no longer valid, don't return it + if [ -n "$pid" ]; then + if ! ps -p $pid >/dev/null; then + rm -f $PIDFILE + pid="" + fi + fi + echo $pid +} + +PID="$(getpid)" + +case "$1" in + start) + stat_busy "Starting memcached" + # memcached is retarded and doesn't write to the pidfile + # before it drops permissions + if [ -n "$PID" ]; then + stat_fail + elif [ -z "$MEMCACHED_USER" ]; then + echo "MEMCACHED_USER must be defined in /etc/conf.d/memcached" + stat_fail + else + touch $PIDFILE && chown $MEMCACHED_USER $PIDFILE + /usr/bin/memcached -d -P $PIDFILE -u $MEMCACHED_USER $MEMCACHED_ARGS + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon memcached + stat_done + fi + fi + ;; + stop) + stat_busy "Stopping memcached" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm -f $PIDFILE + rm_daemon memcached + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/testing/spamassassin/PKGBUILD b/testing/spamassassin/PKGBUILD new file mode 100644 index 000000000..a6b0dbb0b --- /dev/null +++ b/testing/spamassassin/PKGBUILD @@ -0,0 +1,60 @@ +# $Id: PKGBUILD 165370 2012-08-16 16:16:07Z bluewind $ +# Maintainer: Dale Blount <dale@archlinux.org> +# Contributor: Manolis Tzanidakis +pkgname=spamassassin +pkgver=3.3.2 +pkgrel=4 +pkgdesc="A mail filter to identify spam." +arch=('i686' 'x86_64') +license=('APACHE') +url="http://spamassassin.apache.org" +depends=('openssl' 'zlib' 're2c' 'perl-net-dns' 'perl-io-socket-ssl' + 'perl-libwww' 'perl-mail-spf' 'perl-http-message' 'perl-net-http' + 'perl-io-socket-inet6' 'perl-mail-dkim' 'perl-crypt-ssleay') +makedepends=('razor' 'perl-dbi') +optdepends=('razor: to identify collaborately-flagged spam') +backup=('etc/conf.d/spamd' + 'etc/mail/spamassassin/local.cf' + 'etc/mail/spamassassin/init.pre' + 'etc/mail/spamassassin/v310.pre' + 'etc/mail/spamassassin/v312.pre' + 'etc/mail/spamassassin/v320.pre' + 'etc/mail/spamassassin/v330.pre') +install="${pkgname}.install" +options=('!emptydirs') +source=("http://mirrors.devlib.org/apache/${pkgname}/source/Mail-SpamAssassin-${pkgver}.tar.gz" + 'spamd.conf.d' 'spamd' 'spamassassin.service') +md5sums=('d1d62cc5c6eac57e88c4006d9633b81e' + 'af501c6b0bb937a2775b747cc4b6d150' + '57545e6877503d897db21e9a2e8bd2b9' + '1c39572b79bc20c822387814050ee5c1') + +build() { + cd "${srcdir}/Mail-SpamAssassin-${pkgver}" + + # install module in vendor directories. + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor \ + CONTACT_ADDRESS=root@localhost ENABLE_SSL=yes PERL_TAINT=no + make +} + +check() { + cd "${srcdir}/Mail-SpamAssassin-${pkgver}" + + # SSLv2 is disabled by upstream so this test would fail + rm -rf t/spamd_ssl_v2.t + + # parallel tests cause lots of failures; disable for now + #export HARNESS_OPTIONS="j$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/')" + + make test +} + +package() { + cd "${srcdir}/Mail-SpamAssassin-${pkgver}" + make DESTDIR="${pkgdir}" install + + install -D -m644 "${srcdir}/spamd.conf.d" "${pkgdir}/etc/conf.d/spamd" + install -D -m755 "${srcdir}/spamd" "${pkgdir}/etc/rc.d/spamd" + install -D -m644 "${srcdir}/spamassassin.service" "${pkgdir}/usr/lib/systemd/system/spamassassin.serivce" +} diff --git a/testing/spamassassin/spamassassin.install b/testing/spamassassin/spamassassin.install new file mode 100644 index 000000000..fae0264b2 --- /dev/null +++ b/testing/spamassassin/spamassassin.install @@ -0,0 +1,11 @@ +post_install() { + echo "You must run 'sa-update' to install spam rules before use." +} + +post_upgrade() { + # Compile rules, if rules have previously been compiled, and it's possible + if type re2c &>/dev/null && type sa-compile &>/dev/null && [[ -d /var/lib/spamassassin/compiled ]] + echo "Detected compiled rules, running sa-compile..." + sa-compile > /dev/null 2>&1 +fi +} diff --git a/testing/spamassassin/spamassassin.service b/testing/spamassassin/spamassassin.service new file mode 100644 index 000000000..a74f6e644 --- /dev/null +++ b/testing/spamassassin/spamassassin.service @@ -0,0 +1,14 @@ +[Unit] +Description=Spamassassin daemon +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/var/run/spamd.pid +ExecStart=/usr/bin/vendor_perl/spamd --pidfile /var/run/spamd.pid -c +StandardOutput=syslog +StandardError=syslog +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/testing/spamassassin/spamd b/testing/spamassassin/spamd new file mode 100644 index 000000000..3fb97566e --- /dev/null +++ b/testing/spamassassin/spamd @@ -0,0 +1,55 @@ +#!/bin/bash + +# source application-specific settings +[ -f /etc/conf.d/spamd ] && . /etc/conf.d/spamd + +. /etc/rc.conf +. /etc/rc.d/functions + +PIDFILE=/var/run/spamd.pid +if [ -f $PIDFILE ]; then + PID=$(cat $PIDFILE) +else + PID=$(pidof -o %PPID /usr/bin/vendor_perl/spamd) #backward compat +fi + +case "$1" in + start) + stat_busy "Starting spamd" + [ -z "$PID" ] && /usr/bin/vendor_perl/spamd -d -r "$PIDFILE" ${SPAMD_OPTS} + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon spamd + stat_done + fi + ;; + stop) + stat_busy "Stopping spamd" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + # Some users report that a second attempt at stopping the process + # works. So, take a little nap and give it another whirl... + sleep 2 + kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon spamd + stat_done + fi + else + rm_daemon spamd + stat_done + fi + ;; + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 +# vim: ts=2 sw=2 et ft=sh diff --git a/testing/spamassassin/spamd.conf.d b/testing/spamassassin/spamd.conf.d new file mode 100644 index 000000000..4295e0073 --- /dev/null +++ b/testing/spamassassin/spamd.conf.d @@ -0,0 +1 @@ +SPAMD_OPTS="-c" diff --git a/testing/transmission/PKGBUILD b/testing/transmission/PKGBUILD new file mode 100644 index 000000000..ca972d116 --- /dev/null +++ b/testing/transmission/PKGBUILD @@ -0,0 +1,78 @@ +# $Id: PKGBUILD 165349 2012-08-16 08:25:26Z tomegun $ +# Maintainer : Ionut Biru <ibiru@archlinux.org> + +pkgbase=transmission +pkgname=('transmission-cli' 'transmission-gtk' 'transmission-qt') +pkgver=2.61 +pkgrel=2 +arch=('i686' 'x86_64') +url="http://www.transmissionbt.com/" +license=('MIT') +makedepends=('gtk3' 'intltool' 'curl' 'qt' 'libevent') +source=(http://mirrors.m0k.org/transmission/files/$pkgbase-$pkgver.tar.xz + transmissiond transmissiond.conf transmission.systemd + transmission.tmpfiles) + +build() { + cd "$pkgbase-$pkgver" + + ./configure --prefix=/usr + make + pushd qt + qmake qtr.pro + make +} +package_transmission-cli() { + pkgdesc="Fast, easy, and free BitTorrent client (CLI tools, daemon and web client)" + depends=('curl' 'libevent') + backup=('etc/conf.d/transmissiond') + install=transmission-cli.install + + cd "$pkgbase-$pkgver" + + for dir in daemon cli web utils + do + make -C "$dir" DESTDIR="$pkgdir" install + done + + install -D -m755 "$srcdir/transmissiond" "$pkgdir/etc/rc.d/transmissiond" + install -D -m644 "$srcdir/transmissiond.conf" "$pkgdir/etc/conf.d/transmissiond" + install -D -m644 "$srcdir/transmission.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/transmission.conf" + install -D -m644 "$srcdir/transmission.systemd" "$pkgdir/usr/lib/systemd/system/transmission.service" + ln -s transmission.service "$pkgdir/usr/lib/systemd/system/transmissiond.service" + install -D -m644 COPYING "$pkgdir/usr/share/licenses/transmission-cli/COPYING" +} + +package_transmission-gtk() { + pkgdesc="Fast, easy, and free BitTorrent client (GTK+ GUI)" + depends=('curl' 'libevent' 'gtk3' 'desktop-file-utils' 'hicolor-icon-theme') + optdepends=('notification-daemon: Desktop notification support' + 'transmission-cli: daemon and web support') + install=transmission-gtk.install + + cd "$pkgbase-$pkgver" + + make -C gtk DESTDIR="$pkgdir" install + make -C po DESTDIR="$pkgdir" install + install -D -m644 COPYING "$pkgdir/usr/share/licenses/transmission-gtk/COPYING" +} + +package_transmission-qt() { + pkgdesc="Fast, easy, and free BitTorrent client (Qt GUI)" + depends=('curl' 'qt' 'libevent') + optdepends=('transmission-cli: daemon and web support') + install=transmission-qt.install + + cd "$pkgbase-$pkgver" + + make -C qt INSTALL_ROOT="$pkgdir"/usr install + + install -D -m644 COPYING "$pkgdir/usr/share/licenses/transmission-qt/COPYING" + install -D -m644 qt/icons/transmission.png "$pkgdir/usr/share/pixmaps/transmission-qt.png" + install -D -m644 qt/transmission-qt.desktop "$pkgdir/usr/share/applications/transmission-qt.desktop" +} +md5sums=('2ed5b7815ebda65223bac6bdb09dec42' + '7d6186ee2a852ae3d44980f05063e194' + 'db72b02fee139e8ab416324e6c044d76' + 'ecccabbc301d1024c9ef6a7f4aaa530a' + '23f2320361ad54373c3a4551ef634fe8') diff --git a/testing/transmission/transmission-cli.install b/testing/transmission/transmission-cli.install new file mode 100644 index 000000000..d99dcf8b7 --- /dev/null +++ b/testing/transmission/transmission-cli.install @@ -0,0 +1,16 @@ +post_install() { + cat << _EOF + + If you want to run the Transmission daemon at boot, + add transmissiond to the DAEMONS array in /etc/rc.conf. + +_EOF +} + +post_upgrade() { + # create user/group that the daemon will run as by default, do not delete this on uninstall, as it will own files + getent group transmission >/dev/null || groupadd -g 169 transmission + getent passwd transmission >/dev/null || useradd -c 'Transmission BitTorrent Client' -u 169 -g transmission -b '/var/lib' -s /bin/false transmission + passwd -l transmission &>/dev/null + systemd-tmpfiles --create transmission.conf +} diff --git a/testing/transmission/transmission-gtk.install b/testing/transmission/transmission-gtk.install new file mode 100644 index 000000000..c317fbaca --- /dev/null +++ b/testing/transmission/transmission-gtk.install @@ -0,0 +1,12 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/transmission/transmission-qt.install b/testing/transmission/transmission-qt.install new file mode 100644 index 000000000..e111ef946 --- /dev/null +++ b/testing/transmission/transmission-qt.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/transmission/transmission.systemd b/testing/transmission/transmission.systemd new file mode 100644 index 000000000..2ca0dedf7 --- /dev/null +++ b/testing/transmission/transmission.systemd @@ -0,0 +1,11 @@ +[Unit] +Description=Transmission Bit Torrent Daemon + +[Service] +User=transmission +Type=forking +PIDFile=/run/transmission/transmission.pid +ExecStart=/usr/bin/transmission-daemon --pid-file /run/transmission/transmission.pid + +[Install] +WantedBy=multi-user.target diff --git a/testing/transmission/transmission.tmpfiles b/testing/transmission/transmission.tmpfiles new file mode 100644 index 000000000..b603066c1 --- /dev/null +++ b/testing/transmission/transmission.tmpfiles @@ -0,0 +1 @@ +d /run/transmission - transmission transmission - diff --git a/testing/transmission/transmissiond b/testing/transmission/transmissiond new file mode 100644 index 000000000..ea3d770f9 --- /dev/null +++ b/testing/transmission/transmissiond @@ -0,0 +1,46 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/transmissiond + +PID=`pidof -o %PPID /usr/bin/transmission-daemon` +case "$1" in + start) + stat_busy "Starting Transmission Daemon" + [ -z "$PID" ] && su -l -s /bin/sh -c "/usr/bin/transmission-daemon $TRANS_ARGS" "${TRANS_USER:-transmission}" + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon transmissiond + stat_done + fi + ;; + stop) + stat_busy "Stopping Transmission Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon transmissiond + stat_done + fi + ;; + restart) + $0 stop + while [ ! -z "$PID" -a -d "/proc/$PID" ]; do sleep 1; done + $0 start + ;; + reload) + stat_busy "Reloading config" + [ ! -z "$PID" ] && kill -HUP $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + *) + echo "usage: $0 {start|stop|restart|reload}" +esac +exit 0 diff --git a/testing/transmission/transmissiond.conf b/testing/transmission/transmissiond.conf new file mode 100644 index 000000000..45a9fd51d --- /dev/null +++ b/testing/transmission/transmissiond.conf @@ -0,0 +1,4 @@ +# example configuration file + +# TRANS_USER="transmission" +# TRANS_ARGS="" |