diff options
44 files changed, 1987 insertions, 207 deletions
diff --git a/community/chrony/PKGBUILD b/community/chrony/PKGBUILD index 5b0fad6de..cb9bdbfc9 100644 --- a/community/chrony/PKGBUILD +++ b/community/chrony/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 72784 2012-06-22 12:49:49Z dreisner $ +# $Id: PKGBUILD 75347 2012-08-20 19:15:16Z dreisner $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> # Contributor: Patrick Leslie Polzer <leslie.polzer@gmx.net> @@ -8,7 +8,7 @@ pkgname=chrony pkgver=1.26 -pkgrel=3 +pkgrel=5 pkgdesc='Lightweight NTP client and server' arch=('i686' 'x86_64') url="http://chrony.tuxfamily.org/" @@ -36,4 +36,7 @@ package() { install -Dm0644 $srcdir/$pkgname-$pkgver/examples/chrony.conf.example $pkgdir/etc/chrony.conf install -Dm0755 $srcdir/rc.d $pkgdir/etc/rc.d/chrony install -Dm644 $srcdir/service $pkgdir/usr/lib/systemd/system/chrony.service + + install -dm755 "$pkgdir/usr/lib/ntp-units.d" + echo "$pkgname.service" > "$pkgdir/usr/lib/ntp-units.d/$pkgname.list" } diff --git a/community/mupdf/PKGBUILD b/community/mupdf/PKGBUILD index c1e8e8963..f339be13c 100644 --- a/community/mupdf/PKGBUILD +++ b/community/mupdf/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 74707 2012-08-02 09:04:30Z bpiotrowski $ +# $Id: PKGBUILD 75333 2012-08-20 06:45:01Z bpiotrowski $ # Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> # Contributor: Brad Fanella <bradfanella@archlinux.us> # Contributor: Stefan Husmann <stefan-husmann@t-online.de> @@ -6,8 +6,8 @@ # Contributor: xduugu (.desktop and install files) pkgname=mupdf -pkgver=1.0 -pkgrel=2 +pkgver=1.1 +pkgrel=1 pkgdesc="lightweight PDF viewer and toolkit written in portable C" arch=('i686' 'x86_64') url="http://mupdf.com" @@ -15,19 +15,19 @@ license=('GPL3') depends=('freetype2' 'libjpeg' 'jbig2dec' 'openjpeg' 'libxext' 'desktop-file-utils' 'xdg-utils') install=mupdf.install source=("http://mupdf.com/download/$pkgname-$pkgver-source.tar.gz") -md5sums=('d986ab98e2b035b7abd61afc474562b3') +md5sums=('f7b5fd753f40aca207e9afd70d8f8edf') build() { CFLAGS+=" -fPIC" CXXFLAGS+=" -fPIC" cd "$srcdir"/$pkgname-$pkgver-source - make build=release prefix="$pkgdir/usr" + make build=release prefix="$pkgdir"/usr } package() { cd "$srcdir"/$pkgname-$pkgver-source - make build=release prefix="$pkgdir/usr" install + make build=release prefix="$pkgdir"/usr install sed -i 's/mupdf.xpm/mupdf/' debian/mupdf.desktop sed -i 's/application\/x-pdf/application\/x-pdf/' debian/mupdf.desktop diff --git a/community/openntpd/PKGBUILD b/community/openntpd/PKGBUILD index 5bddf7dca..899ae7e15 100644 --- a/community/openntpd/PKGBUILD +++ b/community/openntpd/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 72171 2012-06-09 14:07:36Z dreisner $ +# $Id: PKGBUILD 75345 2012-08-20 19:14:50Z dreisner $ # Maintainer: Vesa Kaihlavirta <vegai@iki.fi> # Contributor: Mark Rosenstand <mark@borkware.net> # Contributor: Giorgio Lando <patroclo7@gmail.com> (adjtimex patch) @@ -6,7 +6,7 @@ pkgname=openntpd pkgver=3.9p1 -pkgrel=15 +pkgrel=18 pkgdesc="Free, easy to use implementation of the Network Time Protocol." url="http://www.openntpd.org/" arch=('x86_64' 'i686') @@ -21,7 +21,7 @@ sha256sums=('83dd7c1e8ec8b4567afe49af539271b5a73562fb7a3ca51df73eccba89ec8c49' '77a0d1f3439d779c2ce259becf3fa583c21a16682a4f5327094da2e9837f6f96' '3abcec94c072b5913ef7156a22049d796ff04e19105befe1ea81a66522928fd2' 'fe12841110c3c080519e248988c4b6334f54bd9646b015753c7e15de2a9600c5' - 'b54b88cb0fe35636405e2b09744633cd815edb3e8c864035bcdb05f727858f53') + '7ad4d3ce4af3a6ff47ba2e5428092139666ad821101dafe1599b209d53f6943f') build() { cd "$srcdir/$pkgname-$pkgver" @@ -52,6 +52,9 @@ package() { # avoid conflict with filesystem>=2012.06 rm -r "$pkgdir/run" + + install -dm755 "$pkgdir/usr/lib/ntp-units.d" + echo "$pkgname.service" > "$pkgdir/usr/lib/ntp-units.d/$pkgname.list" } # vim:set ts=2 sw=2 et: diff --git a/community/openntpd/openntpd.install b/community/openntpd/openntpd.install index 42063ef21..4f42aeb1f 100644 --- a/community/openntpd/openntpd.install +++ b/community/openntpd/openntpd.install @@ -10,7 +10,7 @@ createuser() { post_install() { createuser - systemd-tmpfiles --create /usr/lib/tmpfiles.d/openntpd.conf + systemd-tmpfiles --create openntpd.conf } post_upgrade() { diff --git a/community/openntpd/openntpd.service b/community/openntpd/openntpd.service index db76531d1..e419204d4 100644 --- a/community/openntpd/openntpd.service +++ b/community/openntpd/openntpd.service @@ -4,7 +4,7 @@ After=network.target [Service] Type=forking -ExecStart=/usr/sbin/ntpd +ExecStart=/usr/sbin/ntpd -s [Install] WantedBy=multi-user.target diff --git a/core/iproute2/PKGBUILD b/core/iproute2/PKGBUILD index 471b91ea9..4ce4a46f4 100644 --- a/core/iproute2/PKGBUILD +++ b/core/iproute2/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 162200 2012-06-23 12:13:11Z ronald $ +# $Id: PKGBUILD 165491 2012-08-20 23:01:53Z allan $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Contributor: Judd Vinet <jvinet@zeroflux.org> pkgname=iproute2 -pkgver=3.4.0 -pkgrel=2 +pkgver=3.5.1 +pkgrel=1 pkgdesc="IP Routing Utilities" arch=('i686' 'x86_64') license=('GPL2') @@ -20,7 +20,7 @@ backup=('etc/iproute2/ematch_map' 'etc/iproute2/rt_dsfield' 'etc/iproute2/rt_pro 'etc/iproute2/rt_realms' 'etc/iproute2/rt_scopes' 'etc/iproute2/rt_tables') source=(http://www.kernel.org/pub/linux/utils/net/$pkgname/$pkgname-$pkgver.tar.xz iproute2-fhs.patch) -sha1sums=('fcea492dea2f3ecf9d35f279e2f1a7ea6ca0d527' +sha1sums=('461f3e97d84264a597176de3ba94633114959df5' '35b8cf2dc94b73eccad427235c07596146cd6f6c') build() { diff --git a/core/rfkill/PKGBUILD b/core/rfkill/PKGBUILD index 64c76c5f7..bf87f9627 100644 --- a/core/rfkill/PKGBUILD +++ b/core/rfkill/PKGBUILD @@ -1,37 +1,39 @@ -# $Id: PKGBUILD 156346 2012-04-17 15:19:00Z bisson $ -# Maintainer: Thomas Bächler <thomas@archlinux.org> +# $Id: PKGBUILD 165479 2012-08-20 14:46:54Z bisson $ +# Maintainer: Gaetan Bisson <bisson@archlinux.org> +# Contributor: Thomas Bächler <thomas@archlinux.org> # Contributor: Giovanni Scafora <giovanni@archlinux.org> pkgname=rfkill pkgver=0.4 -pkgrel=4 -pkgdesc="A tool for enabling and disabling wireless devices" -arch=('i686' 'x86_64') -url="http://linuxwireless.org/en/users/Documentation/rfkill" +pkgrel=5 +pkgdesc='Tool for enabling and disabling wireless devices' +url='http://linuxwireless.org/en/users/Documentation/rfkill' license=('custom') -source=(http://wireless.kernel.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2 - 60-rfkill.rules - rfkill.conf.d - rfkill.rc.d) -backup=(etc/conf.d/rfkill) -md5sums=('727892c0fb35c80ee3849fbe89b45350' - '63f9bf9264911242e430867a41e8918c' - '398e7cadf023e05e3e0c323aa33575b9' - '793f0510e26547eb2632efce7d16e50e') +arch=('i686' 'x86_64') +source=("http://wireless.kernel.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2" + 'rules.d' + 'service' + 'conf.d' + 'rc.d') +sha1sums=('fccabf5a272ac2891f24dc35449dc6f4c45ff44b' + '6390eaa793b473098aaa11b13c5254d611a4c13a' + 'cadc563f967c5ac680e7cdfd764718b412201f8a' + 'd969fe927a9fb2926af43a311a7c1fa126fe59a9' + '380af0b002f51543557306ed68a27f0059fd5a6f') + +backup=('etc/conf.d/rfkill') build() { - cd "${srcdir}/${pkgname}-${pkgver}" - make + cd "${srcdir}/${pkgname}-${pkgver}" + make } package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install - # License - install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" - # Udev rule - install -Dm644 "${srcdir}/60-rfkill.rules" "${pkgdir}/usr/lib/udev/rules.d/60-rfkill.rules" - # Init script - install -Dm644 "${srcdir}/rfkill.conf.d" "${pkgdir}/etc/conf.d/rfkill" - install -Dm755 "${srcdir}/rfkill.rc.d" "${pkgdir}/etc/rc.d/rfkill" + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -Dm644 ../rules.d "${pkgdir}/usr/lib/udev/rules.d/60-rfkill.rules" + install -Dm644 ../service "${pkgdir}/usr/lib/systemd/system/rfkill.service" + install -Dm644 ../conf.d "${pkgdir}/etc/conf.d/rfkill" + install -Dm755 ../rc.d "${pkgdir}/etc/rc.d/rfkill" } diff --git a/core/rfkill/conf.d b/core/rfkill/conf.d new file mode 100644 index 000000000..4483da26c --- /dev/null +++ b/core/rfkill/conf.d @@ -0,0 +1,20 @@ +# +# /etc/conf.d/rfkill +# Configuration for the rfkill startup script +# + +# List of devices to block on startup (space-separated) +RFKILL_BLOCK="" + +# List of devices to unblock on startup (space-separated) +RFKILL_UNBLOCK="all" + +# Supported device names are: all, wifi, bluetooth, umb, wimax, wwan, gps and specific device names like phy0, hci0, ... +# See "rfkill list" for available devices +# Examples: +# +# Block all bluetooth devices: +# RFKILL_BLOCK="bluetooth" +# +# Unblock the phy0 wifi device and all wwan devices: +# RFKILL_UNBLOCK="phy0 wwan" diff --git a/core/rfkill/rc.d b/core/rfkill/rc.d new file mode 100755 index 000000000..ce90ee150 --- /dev/null +++ b/core/rfkill/rc.d @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/rfkill + +case "$1" in + start) + for device in ${RFKILL_BLOCK}; do + stat_busy "Blocking rfkill device: ${device}" + /usr/sbin/rfkill block ${device} + if [ $? -eq 0 ]; then + stat_done + else + stat_fail + fi + done + for device in ${RFKILL_UNBLOCK}; do + stat_busy "Unblocking rfkill device: ${device}" + /usr/sbin/rfkill unblock ${device} + if [ $? -eq 0 ]; then + stat_done + else + stat_fail + fi + done + ;; + stop) + ;; + restart) + $0 start + ;; + *) + echo "usage: $0 {start}" + exit 1 + ;; +esac +exit 0 diff --git a/core/rfkill/rules.d b/core/rfkill/rules.d new file mode 100644 index 000000000..bc98a3bef --- /dev/null +++ b/core/rfkill/rules.d @@ -0,0 +1 @@ +KERNEL=="rfkill", GROUP="rfkill", MODE="0664" diff --git a/core/rfkill/service b/core/rfkill/service new file mode 100644 index 000000000..decd5b6fc --- /dev/null +++ b/core/rfkill/service @@ -0,0 +1,11 @@ +[Unit] +Description=RFKill-Block Selected Devices + +[Service] +Type=oneshot +ExecStart=/usr/sbin/rfkill block 9999 +ExecStop=/usr/sbin/rfkill unblock all +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/extra/calligra/PKGBUILD b/extra/calligra/PKGBUILD index c10db20f4..51081072d 100644 --- a/extra/calligra/PKGBUILD +++ b/extra/calligra/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 165426 2012-08-19 07:57:30Z andyrtr $ +# $Id: PKGBUILD 165455 2012-08-20 08:43:02Z andrea $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Maintainer: Andrea Scarpino <andrea@archlinux.org> @@ -22,15 +22,14 @@ pkgname=('calligra-filters' 'calligra-braindump' 'calligra-flow') pkgver=2.5.0 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url='http://www.calligra-suite.org/' license=('FDL1.2' 'GPL2' 'LGPL') -makedepends=('cmake' 'automoc4' 'boost ' 'eigen2' - 'kdepimlibs' 'libpqxx' 'freetds' 'xbase' - 'kdegraphics-okular' 'gsl' 'kdeedu-marble' - 'libwps' 'libwpg' 'pstoedit' 'glew' - 'fftw' 'opengtl' 'lcms2' 'libkdcraw') +makedepends=('cmake' 'automoc4' 'boost ' 'kdepimlibs' 'eigen2' 'kdeedu-marble' + 'lcms2' 'libmysqlclient' 'libpqxx' 'freetds' 'xbase' 'libwpg' + 'libwps' 'gsl' 'glew' 'fftw' 'opengtl' 'poppler-qt' 'libkdcraw' + 'openjpeg' 'kdegraphics-okular' 'pstoedit') groups=('calligra') source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.bz2") md5sums=('bea9b5e9d95691caaba385ef5522a60d') @@ -41,9 +40,7 @@ build() { cmake ../${pkgbase}-${pkgver} \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DBUILD_active=OFF \ - -DBUILD_mobile=OFF \ - -DIHAVEPATCHEDQT=1 + -DBUILD_active=OFF make } @@ -132,7 +129,7 @@ package_calligra-tools() { package_calligra-karbon() { pkgdesc="Create scalable vector drawings" - depends=('calligra-libs' 'calligra-templates' 'kdebase-runtime') + depends=('calligra-libs' 'calligra-templates' 'kdebase-runtime' 'pstoedit') optdepends=('calligra-filters: import/export filters' 'calligra-tools: extra calligra tools') conflicts=('koffice-karbon' 'koffice-karbon-doc' 'calligra-karbon-doc') @@ -145,7 +142,7 @@ package_calligra-karbon() { package_calligra-kexi() { pkgdesc="Develop desktop database applications" - depends=('calligra-libs' 'calligra-templates') + depends=('calligra-libs' 'calligra-templates' 'glew' 'fftw') optdepends=('libmysqlclient: MySQL driver' 'libpqxx: PostgreSQL driver' 'freetds: Sybase & MS SQL driver' @@ -159,6 +156,8 @@ package_calligra-kexi() { cd "${srcdir}"/build/kexi make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/kexi + make DESTDIR="${pkgdir}" install } package_calligra-plan() { @@ -182,12 +181,14 @@ package_calligra-stage() { cd "${srcdir}"/build/stage make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/stage + make DESTDIR="${pkgdir}" install } package_calligra-krita() { pkgdesc="Edit and paint images" - depends=('calligra-templates' 'calligra-plugins' 'kdebase-runtime' - 'qimageblitz' 'poppler-qt' 'opengtl' 'glew' 'libkdcraw' 'fftw') + depends=('calligra-templates' 'calligra-plugins' 'kdebase-runtime' 'eigen2' + 'poppler-qt' 'libkdcraw' 'fftw' 'glew' 'opengtl') conflicts=('koffice-krita' 'calligra-krita-doc') replaces=('koffice-krita' 'calligra-krita-doc') install=calligra-krita.install @@ -198,7 +199,7 @@ package_calligra-krita() { package_calligra-sheets() { pkgdesc="Write spreadsheet documents" - depends=('calligra-templates' 'calligra-libs' 'gsl' 'kdebase-runtime') + depends=('calligra-templates' 'calligra-libs' 'gsl' 'kdebase-runtime' 'eigen2') optdepends=('calligra-filters: import/export filters' 'calligra-plugins: extra calligra plugins' 'calligra-tools: extra calligra tools') @@ -208,12 +209,13 @@ package_calligra-sheets() { cd "${srcdir}"/build/sheets make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/sheets + make DESTDIR="${pkgdir}" install } package_calligra-words() { pkgdesc="Word Processor" - depends=('calligra-templates' 'calligra-pics' 'calligra-kounavail' - 'calligra-plugins' 'kdegraphics-okular') + depends=('calligra-templates' 'calligra-pics' 'calligra-plugins' 'kdegraphics-okular') optdepends=('calligra-tools: extra calligra tools') conflicts=('koffice-kword') replaces=('koffice-kword') @@ -227,6 +229,7 @@ package_calligra-handbook() { pkgdesc="Documentation for Calligra" conflicts=('koffice-handbook') replaces=('koffice-handbook') + options=('docs') cd "${srcdir}"/build/doc/calligra make DESTDIR="${pkgdir}" install @@ -243,7 +246,7 @@ package_calligra-braindump() { package_calligra-flow() { pkgdesc="Flowchart & Diagram Editing" - depends=('calligra-words' 'kdebase-runtime') + depends=('calligra-words') conflicts=('calligra-flow-doc') replaces=('calligra-flow-doc') install=calligra-flow.install diff --git a/extra/dvdauthor/PKGBUILD b/extra/dvdauthor/PKGBUILD index 6eda716a9..003bebf9a 100644 --- a/extra/dvdauthor/PKGBUILD +++ b/extra/dvdauthor/PKGBUILD @@ -1,28 +1,24 @@ -# $Id: PKGBUILD 148702 2012-02-05 11:47:33Z ibiru $ +# $Id: PKGBUILD 165483 2012-08-20 17:27:32Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Travis Willard <travisw@wmpub.ca> # Contributor: Jaroslaw Swierczynski <swiergot@juvepoland.com> # Contributor: Nicolai Lissner <nlissne@linux01.gwdg.de> pkgname=dvdauthor -pkgver=0.7.0 -pkgrel=4 +pkgver=0.7.1 +pkgrel=1 pkgdesc="DVD authoring tools" arch=('i686' 'x86_64') url="http://dvdauthor.sourceforge.net/" license=('GPL') depends=('libdvdread' 'imagemagick' 'libxml2' 'libpng' 'fribidi') options=('!makeflags') -source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz" - 'dvdauthor-0.7.0-libpng15.patch') -md5sums=('33a447fb98ab3293ac40f869eedc17ff' - '9ea90bbea6adb0469c8c1b2f7d033f11') +source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz") +md5sums=('2694a5a3ef460106ea3caf0f7f60ff80') build() { cd "${srcdir}/${pkgname}" - patch -Np0 -i "${srcdir}/dvdauthor-0.7.0-libpng15.patch" - ./configure --prefix=/usr \ --sysconfdir=/etc make diff --git a/extra/fping/PKGBUILD b/extra/fping/PKGBUILD index d451776c2..0383b1d05 100644 --- a/extra/fping/PKGBUILD +++ b/extra/fping/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 160147 2012-05-29 23:00:04Z giovanni $ +# $Id: PKGBUILD 165451 2012-08-20 08:01:40Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=fping -pkgver=3.2 +pkgver=3.3 pkgrel=1 pkgdesc="A utility to ping multiple hosts at once" arch=('i686' 'x86_64') @@ -11,13 +11,15 @@ url="http://www.fping.org/" license=('custom') depends=('glibc') source=("http://www.fping.org/dist/${pkgname}-${pkgver}.tar.gz") -md5sums=('efc86557e9b54e5c3becb598a50684a0') +md5sums=('3260bdc49e72ccc9dc63b1e2fb02eae5') build() { cd "$srcdir/$pkgname-$pkgver" ./configure --prefix=/usr \ - --mandir=/usr/share/man + --mandir=/usr/share/man \ + --enable-ipv4 \ + --enable-ipv6 make } diff --git a/extra/irqbalance/PKGBUILD b/extra/irqbalance/PKGBUILD index 99648219e..52c5ae477 100644 --- a/extra/irqbalance/PKGBUILD +++ b/extra/irqbalance/PKGBUILD @@ -2,7 +2,8 @@ # Contributor: Martin Striz <ms@poruba.net> pkgname=irqbalance -pkgver=1.0.3 +_realver=1.0.3 +pkgver=1.0.3.20110809 pkgrel=1 pkgdesc="IRQ balancing daemon for SMP systems" arch=('i686' 'x86_64') @@ -11,22 +12,29 @@ license=('GPL') depends=(glib2 numactl libcap-ng) makedepends=(pkgconfig) backup=(etc/conf.d/irqbalance) -source=(http://irqbalance.googlecode.com/files/irqbalance-$pkgver.tar.gz +source=(http://irqbalance.googlecode.com/files/irqbalance-$_realver.tar.gz + irqbalance-2011-08-09.patch irqbalance.conf.d - irqbalance.rc.d) + irqbalance.rc.d + irqbalance.service) md5sums=('6f246481d6295bcb9a79751c03207c96' + '49a5669fc3eb452a5d24abec887f0a6a' '336c1ee99818f9ecda1687e34c69fd6b' - 'fb82fc5d267d39110baf720d81282a7c') + 'fb82fc5d267d39110baf720d81282a7c' + '9e82dc471128117982a8dd0c4bd5f246') build() { - cd "$srcdir/$pkgname-$pkgver" + cd "$srcdir/$pkgname-$_realver" + patch -Np1 < ../irqbalance-2011-08-09.patch + autoreconf -fi ./configure --prefix=/usr make } package() { - cd "$srcdir/$pkgname-$pkgver" + 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/extra/irqbalance/irqbalance-2011-08-09.patch b/extra/irqbalance/irqbalance-2011-08-09.patch new file mode 100644 index 000000000..fcdb8bdbf --- /dev/null +++ b/extra/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/extra/irqbalance/irqbalance.service b/extra/irqbalance/irqbalance.service new file mode 100644 index 000000000..372ac0aa4 --- /dev/null +++ b/extra/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/extra/libkgapi/PKGBUILD b/extra/libkgapi/PKGBUILD index 9fcc68fd8..9eb917056 100644 --- a/extra/libkgapi/PKGBUILD +++ b/extra/libkgapi/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 164828 2012-08-06 23:06:24Z andrea $ +# $Id: PKGBUILD 165471 2012-08-20 13:27:31Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> pkgname=libkgapi -pkgver=0.4.1 +pkgver=0.4.2 pkgrel=1 pkgdesc="A KDE-based library for accessing various Google services via their public API" -url='https://projects.kde.org/projects/kdereview/libkgoogle' +url='https://projects.kde.org/projects/extragear/libs/libkgapi' arch=('i686' 'x86_64') license=('GPL' 'LGPL' 'FDL') depends=('kdepimlibs' 'qjson') @@ -13,7 +13,7 @@ makedepends=('cmake' 'automoc4' 'boost') replaces=('akonadi-google' 'libkgoogle') conflicts=('akonadi-google' 'libkgoogle') source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2") -md5sums=('b4cefa643e95f5670997b5001547988f') +md5sums=('7da940eb4ed9bdb909d29e93ef6bce67') build() { cd "${srcdir}" diff --git a/extra/licq/PKGBUILD b/extra/licq/PKGBUILD index 907c1bc91..7975502c3 100644 --- a/extra/licq/PKGBUILD +++ b/extra/licq/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 163710 2012-07-18 01:05:42Z ibiru $ +# $Id: PKGBUILD 165473 2012-08-20 13:43:35Z juergen $ # Maintainer: Juergen Hoetzel <juergen@archlinux.org> pkgname=licq -pkgver=1.6.0 -pkgrel=5 +pkgver=1.6.1 +pkgrel=1 pkgdesc="Advanced graphical ICQ clone and more for Unix" arch=('i686' 'x86_64') url="http://www.licq.org" @@ -12,7 +12,7 @@ depends=('boost-libs' 'gpgme' 'libxss' 'qt') makedepends=('cmake' 'boost') options=('!libtool') source=(http://downloads.sourceforge.net/sourceforge/licq/licq-${pkgver}.tar.bz2) -md5sums=('383153697e281a0b1b4ff008936731b8') +md5sums=('9caa6d2e215a41a8b99c64ecbc2e6299') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/extra/live-media/PKGBUILD b/extra/live-media/PKGBUILD index 4e883f1f1..f04d06552 100644 --- a/extra/live-media/PKGBUILD +++ b/extra/live-media/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 165449 2012-08-19 19:05:03Z giovanni $ +# $Id: PKGBUILD 165457 2012-08-20 09:26:27Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Gilles CHAUVIN <gcnweb@gmail.com> pkgname=live-media -pkgver=2012.08.17 +pkgver=2012.08.20 pkgrel=1 pkgdesc="A set of C++ libraries for multimedia streaming" arch=('i686' 'x86_64') @@ -11,7 +11,7 @@ license=('LGPL') url="http://live555.com/liveMedia" depends=('gcc-libs') source=("http://live555.com/liveMedia/public/live.${pkgver}.tar.gz") -md5sums=('8bb807d9ac435d4030a38466f8236117') +md5sums=('0504355e4bb7fa5e2c02c098eb5421b6') build() { cd ${srcdir}/live diff --git a/extra/ntp/PKGBUILD b/extra/ntp/PKGBUILD index 3da7795da..2ad69005a 100644 --- a/extra/ntp/PKGBUILD +++ b/extra/ntp/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 162162 2012-06-22 12:59:21Z dreisner $ +# $Id: PKGBUILD 165490 2012-08-20 19:14:16Z dreisner $ # Maintainer: Gaetan Bisson <bisson@archlinux.org> # Contributor: kevin <kevin@archlinux.org> pkgname=ntp pkgver=4.2.6.p5 _realver=4.2.6p5 -pkgrel=7 +pkgrel=10 pkgdesc='Network Time Protocol reference implementation' url='http://www.ntp.org/' license=('custom') @@ -26,7 +26,7 @@ sha1sums=('4a5353a4791b6f4315a66c28d504ec6c7926b192' 'eb1f63814b9adbd3d518e880fa3b38c375f0fe91' '4537d1f58b299d463db5048129cb264511474b0b' '4f76f7f9ffc8315ff9924f793f272d4f6939b816' - '81df5c4d51cb69bc29363625ff49e2bd388d1fa9') + '25a27cecdb937f48fa7b7c71dcc8b31cdad89306') install=install @@ -61,4 +61,7 @@ package() { install -d "${pkgdir}"/usr/share/man mv man/man* "${pkgdir}"/usr/share/man mv "${pkgdir}/usr/share/man/man8/ntpd.8" "${pkgdir}/usr/share/man/man8/ntp-ntpd.8" # we should ditch openntpd + + install -dm755 "$pkgdir/usr/lib/ntp-units.d" + echo "ntpd.service" > "$pkgdir/usr/lib/ntp-units.d/$pkgname.list" } diff --git a/extra/ntp/ntpd.service b/extra/ntp/ntpd.service index e0cbf879e..dcb5df634 100644 --- a/extra/ntp/ntpd.service +++ b/extra/ntp/ntpd.service @@ -1,12 +1,12 @@ [Unit] Description=Network Time Service -After=network.target +After=network.target nss-lookup.target [Service] Type=forking -PIDFile=/run/ntpd.pid -EnvironmentFile=/etc/conf.d/ntpd.conf -ExecStart=/usr/bin/ntpd $NTPD_ARGS -p /run/ntpd.pid +PrivateTmp=true +ExecStart=/usr/bin/ntpd -g -u ntp:ntp +ControlGroup=cpu:/ [Install] WantedBy=multi-user.target diff --git a/extra/smb4k/PKGBUILD b/extra/smb4k/PKGBUILD index 03645c208..eb67059a2 100644 --- a/extra/smb4k/PKGBUILD +++ b/extra/smb4k/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 162238 2012-06-24 07:45:21Z giovanni $ +# $Id: PKGBUILD 165459 2012-08-20 09:49:18Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Emanuele Rampichini <emanuele.rampichini@gmail.com> pkgname=smb4k -pkgver=1.0.3 +pkgver=1.0.4 pkgrel=1 pkgdesc="A KDE program that browses samba shares" arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ depends=('kdebase-runtime') makedepends=('cmake' 'automoc4') install=smb4k.install source=("http://downloads.sourceforge.net/project/${pkgname}/Smb4K%20%28stable%20releases%29/${pkgver}/${pkgname}-${pkgver}.tar.bz2") -md5sums=('943b4ccf1a481600784538148d86d3e4') +md5sums=('55a09aa0a9513c9b8c5ae6e414a3cc8e') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/extra/swig/PKGBUILD b/extra/swig/PKGBUILD index e7f999488..73a195180 100644 --- a/extra/swig/PKGBUILD +++ b/extra/swig/PKGBUILD @@ -1,31 +1,21 @@ -# $Id: PKGBUILD 163234 2012-07-11 16:22:59Z stephane $ +# $Id: PKGBUILD 165493 2012-08-20 23:08:36Z stephane $ # Maintainer: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=swig -pkgver=2.0.7 -pkgrel=2 +pkgver=2.0.8 +pkgrel=1 pkgdesc="Generate scripting interfaces to C/C++ code" arch=('i686' 'x86_64') url="http://www.swig.org/" license=('custom') depends=('zlib' 'pcre') -source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz - pyint_fromsize_t.diff - upstream_r13128.diff) -sha1sums=('307020fb6437092e32c9c1bd9af8bccb1645b529' - '59ee179b57920d255c58afe45632b896e40b5b7d' - '8f0c5ae6a46c22606cc88c649bfd0a31f061a963') +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz) +sha1sums=('763305da320163903c69c1cdfbf9a942117d9ace') build() { cd "${srcdir}/${pkgname}-${pkgver}" - # FS#30624 - patch -Np1 -i ../pyint_fromsize_t.diff - - # Fix call to Swig_name_decl - patch -Np1 -i ../upstream_r13128.diff - ./configure --prefix=/usr make } diff --git a/extra/transmission/PKGBUILD b/extra/transmission/PKGBUILD index fae2b402f..dc5bca7f2 100644 --- a/extra/transmission/PKGBUILD +++ b/extra/transmission/PKGBUILD @@ -1,19 +1,17 @@ -# $Id: PKGBUILD 164034 2012-07-24 18:37:58Z ibiru $ +# $Id: PKGBUILD 165472 2012-08-20 13:29:51Z tomegun $ # Maintainer : Ionut Biru <ibiru@archlinux.org> pkgbase=transmission pkgname=('transmission-cli' 'transmission-gtk' 'transmission-qt') pkgver=2.61 -pkgrel=1 +pkgrel=3 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) -md5sums=('2ed5b7815ebda65223bac6bdb09dec42' - '08875299e3fbb68fc546c1f350ac1f06' - 'be39806c35b7544856fa4070b00fc960') + transmissiond transmissiond.conf transmission.systemd + transmission.tmpfiles) build() { cd "$pkgbase-$pkgver" @@ -39,6 +37,9 @@ package_transmission-cli() { 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" } @@ -70,3 +71,8 @@ package_transmission-qt() { 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' + '5c289c8901221a94be74665368ab5c2c' + '23f2320361ad54373c3a4551ef634fe8') diff --git a/extra/transmission/transmission-cli.install b/extra/transmission/transmission-cli.install index cb6bf6050..68df89498 100644 --- a/extra/transmission/transmission-cli.install +++ b/extra/transmission/transmission-cli.install @@ -3,7 +3,14 @@ post_install() { If you want to run the Transmission daemon at boot, add transmissiond to the DAEMONS array in /etc/rc.conf. - You have to set the user in /etc/conf.d/transmissiond. _EOF } + +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' -m -s /bin/false transmission + passwd -l transmission &>/dev/null + systemd-tmpfiles --create transmission.conf +} diff --git a/extra/transmission/transmission.systemd b/extra/transmission/transmission.systemd new file mode 100644 index 000000000..56ab8f794 --- /dev/null +++ b/extra/transmission/transmission.systemd @@ -0,0 +1,14 @@ +[Unit] +Description=Transmission Bit Torrent Daemon + +# This assumes that a user 'transmission' exists, with a writeable homedirectory, +# and that /run/transmission exists and is writeable by the transmission user. + +[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/extra/transmission/transmission.tmpfiles b/extra/transmission/transmission.tmpfiles new file mode 100644 index 000000000..b603066c1 --- /dev/null +++ b/extra/transmission/transmission.tmpfiles @@ -0,0 +1 @@ +d /run/transmission - transmission transmission - diff --git a/extra/transmission/transmissiond b/extra/transmission/transmissiond index 1b4b4dc0e..ea3d770f9 100644 --- a/extra/transmission/transmissiond +++ b/extra/transmission/transmissiond @@ -8,7 +8,7 @@ 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 + [ -z "$PID" ] && su -l -s /bin/sh -c "/usr/bin/transmission-daemon $TRANS_ARGS" "${TRANS_USER:-transmission}" if [ $? -gt 0 ]; then stat_fail else diff --git a/extra/transmission/transmissiond.conf b/extra/transmission/transmissiond.conf index cf6c6f26e..45a9fd51d 100644 --- a/extra/transmission/transmissiond.conf +++ b/extra/transmission/transmissiond.conf @@ -1,5 +1,4 @@ # example configuration file -# TRANSMISSION_HOME=/home/foo -# TRANS_USER="foo" -# TRANS_ARGS="-g $TRANSMISSION_HOME/.config/transmission-daemon" +# TRANS_USER="transmission" +# TRANS_ARGS="" diff --git a/libre/initscripts/PKGBUILD b/libre/initscripts/PKGBUILD index a209713b3..0eefec6df 100644 --- a/libre/initscripts/PKGBUILD +++ b/libre/initscripts/PKGBUILD @@ -5,13 +5,16 @@ # Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar> pkgname=initscripts -pkgver=2012.07.29 +pkgver=2012.08.21 pkgrel=1 pkgdesc="System initialization/bootup scripts (Parabola branding)" arch=('any') url="https://parabolagnulinux.org" license=('GPL2') groups=('base') +provides=('initscripts-systemd') +conflicts=('initscripts-systemd') +replaces=('initscripts-systemd') backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown) depends=('glibc' 'bash' 'coreutils' 'systemd-tools' 'iproute2' 'ncurses' 'findutils' 'sysvinit') optdepends=('dhcpcd: DHCP network configuration' @@ -21,10 +24,10 @@ optdepends=('dhcpcd: DHCP network configuration' makedepends=(asciidoc) install=initscripts.install source=("https://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.xz"{,.sig}) +md5sums=('abf911f25417e8fd3c7d787e6f4f1e9e' + '993fd80840cb8d0090e2c93b95a2b71c') package() { cd ${srcdir}/${pkgname}-${pkgver} make DESTDIR=${pkgdir} install } -md5sums=('0fc663f1ad8e7512f5907d498e09be21' - '372f08fcb40e31c0e88a9715354e3b19') diff --git a/libre/virtualbox-libre-modules-lts/PKGBUILD b/libre/virtualbox-libre-modules-lts/PKGBUILD index 1d5f60079..597406075 100644 --- a/libre/virtualbox-libre-modules-lts/PKGBUILD +++ b/libre/virtualbox-libre-modules-lts/PKGBUILD @@ -6,8 +6,8 @@ pkgbase=virtualbox-libre-modules-lts pkgname=('virtualbox-libre-modules-lts' 'virtualbox-libre-parabola-modules-lts') -pkgver=4.1.18 -pkgrel=7 +pkgver=4.1.20 +pkgrel=2 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL') @@ -20,7 +20,7 @@ source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver} os_musix_64.png os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png os_trisquel.png os_ututo_64.png os_ututo.png os_venenux.png libre.patch free-distros.patch) -md5sums=('38db0a87cba659b484af868b0c2bd3ac' +md5sums=('5784c6dda8a9d53f8f21b2d41eba903c' '4c88bd122677a35f68abd76eb01b378b' 'ed1341881437455d9735875ddf455fbe' '8538dba8686d7449cb481c9bae9d722a' @@ -45,7 +45,7 @@ md5sums=('38db0a87cba659b484af868b0c2bd3ac' '4da8eeb2ece7e475fc7a0d1003da26c6' '5e4187af59726d71c5be48d0cd816c34' 'a9e4724b56ddf99bb2e9a8fab8ad43ba' - 'f7d275fc52e5f3cfafd85646c2914063') + '1e47d90affabfbf6dbb07d9d42742d6a') _extramodules=extramodules-3.0-LIBRE-LTS diff --git a/libre/virtualbox-libre-modules-lts/free-distros.patch b/libre/virtualbox-libre-modules-lts/free-distros.patch index 7920fb6ab..47857e05d 100644 --- a/libre/virtualbox-libre-modules-lts/free-distros.patch +++ b/libre/virtualbox-libre-modules-lts/free-distros.patch @@ -432,8 +432,8 @@ <file alias="hd_16px.png">images/hd_16px.png</file> <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file> <file alias="hd_32px.png">images/hd_32px.png</file> ---- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/Global.cpp 2012-06-20 10:17:34.000000000 -0300 -+++ VirtualBox-4.1.18/src/VBox/Main/src-all/Global.cpp 2012-07-25 19:32:44.482993976 -0300 +--- VirtualBox-4.1.20.orig/src/VBox/Main/src-all/Global.cpp 2012-08-20 11:36:24.000000000 -0300 ++++ VirtualBox-4.1.20/src/VBox/Main/src-all/Global.cpp 2012-08-21 14:22:29.148190849 -0300 @@ -35,284 +35,90 @@ VBOXOSTYPE_Unknown, VBOXOSHINT_NONE, 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, @@ -655,25 +655,25 @@ - { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros, "Xandros", - VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC, - 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, -- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", -- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, -- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, -- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", -- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, -- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dynebolic, "Dyne:bolic", + VBOXOSTYPE_Dynebolic, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", -- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, -- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", +- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Venenux, "Venenux", + VBOXOSTYPE_Venenux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", +- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, - { "Linux", "Linux", SchemaDefs_OSTypeId_Linux, "Other Linux", - VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, - 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, diff --git a/libre/virtualbox-libre-modules/PKGBUILD b/libre/virtualbox-libre-modules/PKGBUILD index 7104ed19c..18b529e63 100644 --- a/libre/virtualbox-libre-modules/PKGBUILD +++ b/libre/virtualbox-libre-modules/PKGBUILD @@ -5,8 +5,8 @@ pkgbase=virtualbox-libre-modules pkgname=('virtualbox-libre-modules' 'virtualbox-libre-parabola-modules') -pkgver=4.1.18 -pkgrel=6.2 +pkgver=4.1.20 +pkgrel=2 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL') @@ -19,7 +19,7 @@ source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver} os_musix_64.png os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png os_trisquel.png os_ututo_64.png os_ututo.png os_venenux.png libre.patch free-distros.patch) -md5sums=('38db0a87cba659b484af868b0c2bd3ac' +md5sums=('5784c6dda8a9d53f8f21b2d41eba903c' '4c88bd122677a35f68abd76eb01b378b' 'ed1341881437455d9735875ddf455fbe' '8538dba8686d7449cb481c9bae9d722a' @@ -44,7 +44,7 @@ md5sums=('38db0a87cba659b484af868b0c2bd3ac' '4da8eeb2ece7e475fc7a0d1003da26c6' '5e4187af59726d71c5be48d0cd816c34' 'a9e4724b56ddf99bb2e9a8fab8ad43ba' - 'f7d275fc52e5f3cfafd85646c2914063') + '1e47d90affabfbf6dbb07d9d42742d6a') _extramodules=extramodules-3.5-LIBRE diff --git a/libre/virtualbox-libre-modules/free-distros.patch b/libre/virtualbox-libre-modules/free-distros.patch index 7920fb6ab..47857e05d 100644 --- a/libre/virtualbox-libre-modules/free-distros.patch +++ b/libre/virtualbox-libre-modules/free-distros.patch @@ -432,8 +432,8 @@ <file alias="hd_16px.png">images/hd_16px.png</file> <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file> <file alias="hd_32px.png">images/hd_32px.png</file> ---- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/Global.cpp 2012-06-20 10:17:34.000000000 -0300 -+++ VirtualBox-4.1.18/src/VBox/Main/src-all/Global.cpp 2012-07-25 19:32:44.482993976 -0300 +--- VirtualBox-4.1.20.orig/src/VBox/Main/src-all/Global.cpp 2012-08-20 11:36:24.000000000 -0300 ++++ VirtualBox-4.1.20/src/VBox/Main/src-all/Global.cpp 2012-08-21 14:22:29.148190849 -0300 @@ -35,284 +35,90 @@ VBOXOSTYPE_Unknown, VBOXOSHINT_NONE, 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, @@ -655,25 +655,25 @@ - { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros, "Xandros", - VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC, - 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, -- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", -- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, -- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, -- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", -- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, -- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dynebolic, "Dyne:bolic", + VBOXOSTYPE_Dynebolic, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", -- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, -- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", +- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Venenux, "Venenux", + VBOXOSTYPE_Venenux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", +- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, - { "Linux", "Linux", SchemaDefs_OSTypeId_Linux, "Other Linux", - VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, - 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, diff --git a/libre/virtualbox-libre/PKGBUILD b/libre/virtualbox-libre/PKGBUILD index 8e239915d..eef1c73ca 100644 --- a/libre/virtualbox-libre/PKGBUILD +++ b/libre/virtualbox-libre/PKGBUILD @@ -10,8 +10,8 @@ pkgname=('virtualbox-libre' 'virtualbox-libre-sdk' 'virtualbox-libre-source' 'virtualbox-libre-parabola-source') -pkgver=4.1.18 -pkgrel=5.4 +pkgver=4.1.20 +pkgrel=1 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL' 'custom') @@ -20,14 +20,13 @@ makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libxcursor #'xorg-server-devel' 'xf86driproto' 'libxcomposite') [[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc') source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2 - 10-vboxdrv.rules vboxdrv-reference.patch LocalConfig.kmk ipv6_vnc.patch + 10-vboxdrv.rules vboxdrv-reference.patch LocalConfig.kmk ipv6_vnc.patch change_default_driver_dir.patch vboxservice.conf vboxservice.rc vboxservice.service - vboxweb.conf vboxweb.rc vboxweb.service os_blag_64.png os_blag.png - os_dragora_64.png os_dragora.png os_dynebolic.png os_gnewsense_64.png os_gnewsense.png - os_gnu_64.png os_gnuhurd.png os_gnulinux_64.png os_gnulinux.png os_gnu.png - os_musix_64.png os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png - os_trisquel.png os_ututo_64.png os_ututo.png os_venenux.png libre.patch - free-distros.patch) + vboxweb.conf vboxweb.rc vboxweb.service os_blag_64.png os_blag.png os_dragora_64.png + os_dragora.png os_dynebolic.png os_gnewsense_64.png os_gnewsense.png os_gnu_64.png + os_gnuhurd.png os_gnulinux_64.png os_gnulinux.png os_gnu.png os_musix_64.png + os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png os_trisquel.png + os_ututo_64.png os_ututo.png os_venenux.png libre.patch free-distros.patch) _extramodules=extramodules-3.5-LIBRE _kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true @@ -39,8 +38,6 @@ build() { patch -Np1 -i "$srcdir/change_default_driver_dir.patch" patch -Np1 -i "$srcdir/libre.patch" patch -Np1 -i "$srcdir/free-distros.patch" - # FS#30401 - patch -Np2 -i "$srcdir/ipv6_vnc.patch" ## Removing Nonfree directories rm -rv "./include/VBox/ExtPack" @@ -255,7 +252,7 @@ package_virtualbox-libre-parabola-source() { cp -r src "$pkgdir/var/lib/dkms/vboxguest/$pkgver/source" } -md5sums=('38db0a87cba659b484af868b0c2bd3ac' +md5sums=('5784c6dda8a9d53f8f21b2d41eba903c' '5f85710e0b8606de967716ded7b2d351' 'bf5d1eeeec20a042e8af34cd61a9e11b' 'a1ff1d1b4423556887e48a32978226a6' @@ -289,4 +286,4 @@ md5sums=('38db0a87cba659b484af868b0c2bd3ac' '4da8eeb2ece7e475fc7a0d1003da26c6' '5e4187af59726d71c5be48d0cd816c34' 'a9e4724b56ddf99bb2e9a8fab8ad43ba' - 'f7d275fc52e5f3cfafd85646c2914063') + '1e47d90affabfbf6dbb07d9d42742d6a') diff --git a/libre/virtualbox-libre/free-distros.patch b/libre/virtualbox-libre/free-distros.patch index 7920fb6ab..47857e05d 100644 --- a/libre/virtualbox-libre/free-distros.patch +++ b/libre/virtualbox-libre/free-distros.patch @@ -432,8 +432,8 @@ <file alias="hd_16px.png">images/hd_16px.png</file> <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file> <file alias="hd_32px.png">images/hd_32px.png</file> ---- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/Global.cpp 2012-06-20 10:17:34.000000000 -0300 -+++ VirtualBox-4.1.18/src/VBox/Main/src-all/Global.cpp 2012-07-25 19:32:44.482993976 -0300 +--- VirtualBox-4.1.20.orig/src/VBox/Main/src-all/Global.cpp 2012-08-20 11:36:24.000000000 -0300 ++++ VirtualBox-4.1.20/src/VBox/Main/src-all/Global.cpp 2012-08-21 14:22:29.148190849 -0300 @@ -35,284 +35,90 @@ VBOXOSTYPE_Unknown, VBOXOSHINT_NONE, 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, @@ -655,25 +655,25 @@ - { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros, "Xandros", - VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC, - 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, -- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", -- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, -- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, -- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", -- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, -- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dynebolic, "Dyne:bolic", + VBOXOSTYPE_Dynebolic, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, -- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", -- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, -- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", +- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Venenux, "Venenux", + VBOXOSTYPE_Venenux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", +- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, - { "Linux", "Linux", SchemaDefs_OSTypeId_Linux, "Other Linux", - VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, - 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, diff --git a/testing/grep/PKGBUILD b/testing/grep/PKGBUILD index 0b6547630..1bcec6a13 100644 --- a/testing/grep/PKGBUILD +++ b/testing/grep/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 163569 2012-07-16 02:50:23Z dreisner $ +# $Id: PKGBUILD 165463 2012-08-20 11:35:50Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgname=grep -pkgver=2.13 -pkgrel=2 +pkgver=2.14 +pkgrel=1 pkgdesc="A string search utility" arch=('i686' 'x86_64') license=('GPL3') @@ -14,8 +14,8 @@ depends=('glibc' 'pcre' 'sh') makedepends=('texinfo') install=${pkgname}.install source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig}) -md5sums=('5894d484e6c02249f9702d0d8a472115' - '99acaa4d45ab931be2ecba49a1766df7') +md5sums=('d4a3f03849d1e17ce56ab76aa5a24cab' + 'b94fdcaa058b47a9a25099c26cd2e4c3') build() { cd ${srcdir}/${pkgname}-${pkgver} diff --git a/testing/grep/grep.install b/testing/grep/grep.install index 7cd31301f..885238ac3 100644 --- a/testing/grep/grep.install +++ b/testing/grep/grep.install @@ -1,11 +1,9 @@ infodir=usr/share/info -filelist=(grep.info) +file=grep.info post_install() { [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null - done + install-info $infodir/$file.gz $infodir/dir 2> /dev/null } post_upgrade() { @@ -14,8 +12,6 @@ post_upgrade() { pre_remove() { [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null - done + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null } diff --git a/testing/modemmanager/PKGBUILD b/testing/modemmanager/PKGBUILD index 403673c39..d48648e45 100644 --- a/testing/modemmanager/PKGBUILD +++ b/testing/modemmanager/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 165395 2012-08-17 23:24:24Z heftig $ +# $Id: PKGBUILD 165461 2012-08-20 10:57:16Z heftig $ # Maintainer: Ionut Biru <ibiru@archlinux.org> pkgname=modemmanager _realname=ModemManager pkgver=0.5.2.0 -pkgrel=3 +pkgrel=4 pkgdesc="Mobile broadband modem management service" arch=('i686' 'x86_64') url="http://cgit.freedesktop.org/ModemManager/ModemManager/" @@ -15,7 +15,7 @@ options=('!libtool') source=(http://download.gnome.org/sources/$_realname/0.5/$_realname-$pkgver.tar.xz modem-manager.service) sha256sums=('7f8b3e1996a24e031df7534e226a0f0c7c2dd8b30322e6c5f4611dc1a848e6c8' - '66c9947972066dd5494c3a18b0e833f236e0866b455675368b5994900cbaf384') + '118e36f2f956d719cf4036f3fd5f5bf0fde88ca55bdf7ed95051b5b09066fcbe') build() { cd "$_realname-$pkgver" diff --git a/testing/modemmanager/modem-manager.service b/testing/modemmanager/modem-manager.service index 4e0c43c8c..bad666be8 100644 --- a/testing/modemmanager/modem-manager.service +++ b/testing/modemmanager/modem-manager.service @@ -5,6 +5,10 @@ Description=Modem Manager Type=dbus BusName=org.freedesktop.ModemManager ExecStart=/usr/sbin/modem-manager +# Suppress stderr to eliminate duplicated messages in syslog. MM calls openlog() +# with LOG_PERROR. But systemd redirects stderr to syslog by default, which +# results in logging each message twice. +StandardError=null [Install] WantedBy=multi-user.target diff --git a/testing/wireless_tools/PKGBUILD b/testing/wireless_tools/PKGBUILD new file mode 100644 index 000000000..3ec9cd7d1 --- /dev/null +++ b/testing/wireless_tools/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 165481 2012-08-20 14:54:59Z bisson $ +# Maintainer: Gaetan Bisson <bisson@archlinux.org> +# Contributor: Giovanni Scafora <giovanni@archlinux.org> +# Contributor: Jason Chu <jchu@xentac.net> + +pkgname=wireless_tools +pkgver=29 +pkgrel=7 +pkgdesc='Tools allowing to manipulate the Wireless Extensions' +url='http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html' +license=('GPL') +arch=('i686' 'x86_64') +source=("http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/${pkgname}.${pkgver}.tar.gz" + 'dense.patch') +sha1sums=('22040ac1497f4c5f8ddeca365591b01ae3475710' + '5c297c7dff1ec1d2a3d918c20622ab3c6daf5b72') + +build() { + cd "${srcdir}/${pkgname}.${pkgver}" + patch -p1 -i ../dense.patch # FS#15363 + make CFLAGS="${CFLAGS} -I." LDFLAGS="${LDFLAGS}" +} + +package() { + cd "${srcdir}/${pkgname}.${pkgver}" + make \ + INSTALL_DIR="${pkgdir}/usr/sbin" \ + INSTALL_LIB="${pkgdir}/usr/lib" \ + INSTALL_INC="${pkgdir}/usr/include" \ + INSTALL_MAN="${pkgdir}/usr/share/man" \ + install +} diff --git a/testing/wireless_tools/dense.patch b/testing/wireless_tools/dense.patch new file mode 100644 index 000000000..85182cd82 --- /dev/null +++ b/testing/wireless_tools/dense.patch @@ -0,0 +1,49 @@ +The length field of wext data (iw_point.data) is 16 bits. The largest +value is thus 65535. During the attempts to increase buffer size the +buffer starts at 4096 and is doubled after each failure to fill. From the +time this length reaches 65536 it is effectively zero. We thus loose all +potential space from 32768 to 65535. + +This problem is clear when scanning in a RF dense environment. + +Without this patch: +~$ iwlist wlan0 scan +print_scanning_info: Allocation failed + +With this patch: +~$ iwlist wlan0 scan | grep Cell | wc -l +86 + +Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> + +--- +A similar patch was recently created to fix wpa_supplicant. + +I could not find a source code repo for this code and created this patch +against version 30-pre7 downloaded from +http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html + +diff -uprN wireless_tools_org/wireless_tools.30/iwlist.c wireless_tools.30/iwlist.c +--- wireless_tools_org/wireless_tools.30/iwlist.c 2008-01-16 17:45:41.000000000 -0800 ++++ wireless_tools.30/iwlist.c 2009-02-12 14:16:48.000000000 -0800 +@@ -800,7 +800,7 @@ print_scanning_info(int skfd, + if(iw_get_ext(skfd, ifname, SIOCGIWSCAN, &wrq) < 0) + { + /* Check if buffer was too small (WE-17 only) */ +- if((errno == E2BIG) && (range.we_version_compiled > 16)) ++ if((errno == E2BIG) && (range.we_version_compiled > 16) && (buflen < 65535)) + { + /* Some driver may return very large scan results, either + * because there are many cells, or because they have many +@@ -816,6 +816,10 @@ print_scanning_info(int skfd, + else + buflen *= 2; + ++ /* wrq.u.data.length is 16 bits so max size is 65535 */ ++ if(buflen > 65535) ++ buflen = 65535; ++ + /* Try again */ + goto realloc; + } + diff --git a/~fauno/notmuch/PKGBUILD b/~fauno/notmuch/PKGBUILD index b53224387..b3ff31567 100644 --- a/~fauno/notmuch/PKGBUILD +++ b/~fauno/notmuch/PKGBUILD @@ -3,7 +3,7 @@ # Maintainer: Richard Murri <admin@richardmurri.com> pkgname=notmuch -pkgver=0.13.2 +pkgver=0.14 pkgrel=1 pkgdesc="Notmuch is not much of an email program" arch=(i686 x86_64 mips64el) @@ -65,4 +65,4 @@ package(){ # Remove conflicting zsh completion rm -r ${pkgdir}/usr/share/zsh } -md5sums=('13be4cf1ab2be49b42fec87c3cb44a5a') +md5sums=('5eb3f225d3eb37862932f6baa5780d15') |