From 3df22fb47b8415e32427886cae4a01e34959e9c8 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Tue, 7 Feb 2012 08:44:06 -0500 Subject: [PATCH 01/27] extra-pixman to 0.24.2-2 --- extra/pixman/PKGBUILD | 13 +++-- ...pezoids-where-top-is-above-the-edges.patch | 47 +++++++++++++++++++ 2 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch diff --git a/extra/pixman/PKGBUILD b/extra/pixman/PKGBUILD index aef5126c4..3a310762d 100644 --- a/extra/pixman/PKGBUILD +++ b/extra/pixman/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 147073 2012-01-21 15:12:23Z andyrtr $ +# $Id: PKGBUILD 149216 2012-02-06 13:29:48Z jgc $ # Maintainer: Jan de Groot # Contributor: Alexander Baldeck @@ -9,18 +9,21 @@ plugrel=1 pkgname=pixman pkgver=0.24.2 -pkgrel=1 -pkgdesc="Pixman library" +pkgrel=2 +pkgdesc="The pixel-manipulation library for X and cairo" arch=(i686 x86_64) url="http://xorg.freedesktop.org" license=('custom') depends=('glibc') options=('!libtool') -source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) -sha1sums=('233eed3cd16ee1b2a842140477503d2c68b74418') +source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2 +revert-reject-trapezoids-where-top-is-above-the-edges.patch) +sha1sums=('233eed3cd16ee1b2a842140477503d2c68b74418' + 'ee36251d47ccefd5e276cabdba9917fbb2be787a') build() { cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/revert-reject-trapezoids-where-top-is-above-the-edges.patch" [[ $CARCH = "arm" ]] && CONFIG="--disable-arm-simd --disable-arm-neon --disable-arm-iwmmxt" [[ $CARCH = "armv7h" ]] && CONFIG="--disable-arm-neon --disable-arm-iwmmxt" ./configure --prefix=/usr --disable-static $CONFIG diff --git a/extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch b/extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch new file mode 100644 index 000000000..e661db57c --- /dev/null +++ b/extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch @@ -0,0 +1,47 @@ +From e5555d7a749c90288463ed1c294f58963c607e52 Mon Sep 17 00:00:00 2001 +From: Søren Sandmann Pedersen +Date: Wed, 25 Jan 2012 19:03:05 +0000 +Subject: Revert "Reject trapezoids where top (botttom) is above (below) the edges" + +Cairo 1.10 will sometimes generate trapezoids like this, so we can't +consider them invalid. Fixes bug 45009, reported by Michael Biebl. + +This reverts commit 2437ae80e5066dec9fe52f56b016bf136d7cea06. +--- +diff --git a/pixman/pixman.h b/pixman/pixman.h +index 20ff496..18d9513 100644 +--- a/pixman/pixman.h ++++ b/pixman/pixman.h +@@ -908,14 +908,10 @@ struct pixman_triangle + }; + + /* whether 't' is a well defined not obviously empty trapezoid */ +-#define pixman_trapezoid_valid(t) \ +- ((t)->left.p1.y != (t)->left.p2.y && \ +- (t)->right.p1.y != (t)->right.p2.y && \ +- (int) ((t)->bottom - (t)->top) > 0 && \ +- (t)->bottom <= (t)->left.p2.y && \ +- (t)->bottom <= (t)->right.p2.y && \ +- (t)->top >= (t)->left.p1.y && \ +- (t)->top >= (t)->right.p1.y) ++#define pixman_trapezoid_valid(t) \ ++ ((t)->left.p1.y != (t)->left.p2.y && \ ++ (t)->right.p1.y != (t)->right.p2.y && \ ++ (int) ((t)->bottom - (t)->top) > 0) + + struct pixman_span_fix + { +diff --git a/test/composite-traps-test.c b/test/composite-traps-test.c +index de518d8..ff03b50 100644 +--- a/test/composite-traps-test.c ++++ b/test/composite-traps-test.c +@@ -251,6 +251,6 @@ test_composite (int testnum, + int + main (int argc, const char *argv[]) + { +- return fuzzer_test_main("composite traps", 40000, 0x4346479C, ++ return fuzzer_test_main("composite traps", 40000, 0xE3112106, + test_composite, argc, argv); + } +-- +cgit v0.9.0.2-2-gbebe From 04bb43b5d37f495a9f146f189d5f983d6617005e Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Tue, 7 Feb 2012 08:45:40 -0500 Subject: [PATCH 02/27] extra/x264 to 20120204-1 --- extra/x264/PKGBUILD | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/extra/x264/PKGBUILD b/extra/x264/PKGBUILD index 89bf35738..c43a05b0a 100644 --- a/extra/x264/PKGBUILD +++ b/extra/x264/PKGBUILD @@ -1,15 +1,15 @@ -# $Id: PKGBUILD 140060 2011-10-06 07:33:33Z ibiru $ +# $Id: PKGBUILD 149275 2012-02-06 17:33:29Z ibiru $ # Maintainer : Ionut Biru # Contributor: damir # Contributor: Paul Mattal -# ALARM: Kevin Mihelich +# ALARM: Kevin Mihelich # - configure needs --disable-asm to build on ARM plugrel=1 pkgname=x264 -pkgver=20111030 +pkgver=20120204 pkgrel=1 pkgdesc="free library for encoding H264/AVC video streams" arch=('i686' 'x86_64') @@ -17,15 +17,19 @@ url="http://www.videolan.org/developers/x264.html" license=('GPL') depends=('glibc') makedepends=('yasm') -source=(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245.tar.bz2) -md5sums=('fa52ad09dcb7d4e1a66adcaa2dab26bc') +source=(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245-stable.tar.bz2) +md5sums=('4d793ecc4f9d308724ea47edf400f312') build() { - cd "$srcdir/$pkgname-snapshot-$pkgver-2245" + cd "$srcdir/$pkgname-snapshot-$pkgver-2245-stable" ./configure --enable-shared --disable-asm make +} +package() { + cd "$srcdir/$pkgname-snapshot-$pkgver-2245-stable" + make DESTDIR="$pkgdir" \ bindir=/usr/bin \ libdir=/usr/lib \ From 1e3085cad751f894e15d13534b93fdba06491180 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Tue, 7 Feb 2012 08:46:49 -0500 Subject: [PATCH 03/27] extra/libvpx to 1.0.0-1 --- extra/libvpx/PKGBUILD | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/extra/libvpx/PKGBUILD b/extra/libvpx/PKGBUILD index f34f5ebdf..b0163a279 100644 --- a/extra/libvpx/PKGBUILD +++ b/extra/libvpx/PKGBUILD @@ -1,14 +1,13 @@ -# $Id: PKGBUILD 135631 2011-08-16 21:19:09Z ibiru $ +# $Id: PKGBUILD 149273 2012-02-06 17:33:27Z ibiru $ # Maintainer: Ionut Biru -# ALARM: Kevin Mihelich +# ALARM: Kevin Mihelich # - configure option --enable-shared isn't supported for us plugrel=1 pkgname=libvpx -pkgver=0.9.7.p1 -realver=0.9.7-p1 +pkgver=1.0.0 pkgrel=1 pkgdesc="The VP8 Codec SDK" arch=('i686' 'x86_64') @@ -16,11 +15,11 @@ url="http://www.webmproject.org/" license=('BSD') depends=('glibc') makedepends=('yasm') -source=(http://webm.googlecode.com/files/${pkgname}-v${realver}.tar.bz2) -sha1sums=('dacfefaf3363f781de43858f09cdd0b0d469e6fc') +source=(http://webm.googlecode.com/files/$pkgname-v$pkgver.tar.bz2) +sha1sums=('2919e11074fef72fc61ef1a75160050ffaad6074') build() { - cd "${srcdir}/${pkgname}-v${realver}" + cd "$srcdir/$pkgname-v$pkgver" ./configure --prefix=/usr --enable-vp8 \ --enable-postproc \ --enable-pic \ @@ -30,7 +29,7 @@ build() { } package() { - cd "${srcdir}/${pkgname}-v${realver}" + cd "$srcdir/$pkgname-v$pkgver" make DIST_DIR="$pkgdir/usr" install - install -D -m 0644 LICENSE "$pkgdir/usr/share/licenses/${pkgname}/LICENSE" + install -D -m 0644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } From f89363d68022387ae16cde173b7ea61d4c8f654a Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 8 Feb 2012 10:24:48 -0500 Subject: [PATCH 04/27] removed extra/apache --- extra/apache/PKGBUILD | 150 ----------------------------- extra/apache/apache.conf.d | 15 --- extra/apache/apachectl-confd.patch | 15 --- extra/apache/arch.layout | 22 ----- extra/apache/httpd | 65 ------------- extra/apache/httpd.logrotate | 6 -- 6 files changed, 273 deletions(-) delete mode 100644 extra/apache/PKGBUILD delete mode 100644 extra/apache/apache.conf.d delete mode 100644 extra/apache/apachectl-confd.patch delete mode 100644 extra/apache/arch.layout delete mode 100755 extra/apache/httpd delete mode 100644 extra/apache/httpd.logrotate diff --git a/extra/apache/PKGBUILD b/extra/apache/PKGBUILD deleted file mode 100644 index 90e1b47bb..000000000 --- a/extra/apache/PKGBUILD +++ /dev/null @@ -1,150 +0,0 @@ -# $Id: PKGBUILD 138021 2011-09-14 11:59:52Z pierre $ -# Maintainer: Jan de Groot -# Contributor: Andrea Scarpino -# Contributor: Pierre Schmitz - -# ALARM: Kevin Mihelich -# - rebuild for db update, remove when updated upstream - -plugrel=1 - -pkgname=apache -pkgver=2.2.21 -pkgrel=1.2 -pkgdesc='A high performance Unix-based HTTP server' -arch=('i686' 'x86_64') -options=('!libtool') -url='http://www.apache.org/dist/httpd' -license=('APACHE') -backup=(etc/conf.d/apache etc/httpd/conf/httpd.conf - etc/httpd/conf/extra/httpd-{autoindex,dav,default,info,languages}.conf - etc/httpd/conf/extra/httpd-{manual,mpm,multilang-errordoc}.conf - etc/httpd/conf/extra/httpd-{ssl,userdir,vhosts}.conf - etc/logrotate.d/httpd) -depends=('openssl' 'zlib' 'apr-util' 'pcre') -optdepends=('lynx: apachectl status') -_itkurl=http://mpm-itk.sesse.net/apache2.2-mpm-itk-2.2.17-01 -source=(http://www.apache.org/dist/httpd/httpd-${pkgver}.tar.bz2 - ${_itkurl}/02-rename-prefork-to-itk.patch - ${_itkurl}/03-add-mpm-to-build-system.patch - ${_itkurl}/04-correct-output-makefile-location.patch - ${_itkurl}/05-add-copyright.patch - ${_itkurl}/06-hook-just-after-merging-perdir-config.patch - ${_itkurl}/07-base-functionality.patch - ${_itkurl}/08-max-clients-per-vhost.patch - ${_itkurl}/09-capabilities.patch - ${_itkurl}/10-nice.patch - ${_itkurl}/11-fix-htaccess-reads-for-persistent-connections.patch - apachectl-confd.patch - apache.conf.d - httpd.logrotate - httpd - arch.layout) -md5sums=('1696ae62cd879ab1d4dd9ff021a470f2' - 'f1d9d41360908ceb2374da55ae99197a' - 'cdfa04985a0efa850976aef01c2a0c40' - '0930d2d0612eb0a53a0d00aea7e8687f' - '3a0c29bb91442c33ea73ebbe072af922' - '0ef4729a6f1ffc848ad0e9b440a66f66' - '940944caa948340b11ddae56adaef89b' - 'ce09a987523884de8838f73dc8ec0d19' - 'e75b7dd8d8afcd299ba4ab2ab81c11e4' - 'ce1ccc21f3ad8625169c8f62913450ac' - '1e5b222edcfbf99a3edc56fcb2074fbe' - '4ac64df6e019edbe137017cba1ff2f51' - '08b3c875f6260644f2f52b4056d656b0' - '6382331e9700ed9e8cc78ea51887b537' - 'c7e300a287ef7e2e066ac7639536f87e' - '3d659d41276ba3bfcb20c231eb254e0c') - -build() { - cd "${srcdir}/httpd-${pkgver}" - - patch -Np0 -i "${srcdir}/apachectl-confd.patch" - - # set default user - sed -e 's#User daemon#User http#' \ - -e 's#Group daemon#Group http#' \ - -i docs/conf/httpd.conf.in - - cat "${srcdir}/arch.layout" >> config.layout - - for mpm in prefork worker itk; do - if [ "${mpm}" = "itk" ]; then - # Fix patch to apply with latest Apache version - sed -i -e 's/mpmt_os2}/mpmt_os2|winnt}/g' "${srcdir}/03-add-mpm-to-build-system.patch" - - mkdir -p server/mpm/experimental/itk - cp -r server/mpm/prefork/* server/mpm/experimental/itk/ - mv server/mpm/experimental/itk/prefork.c server/mpm/experimental/itk/itk.c - - patch -Np1 -i "${srcdir}/02-rename-prefork-to-itk.patch" - patch -Np1 -i "${srcdir}/03-add-mpm-to-build-system.patch" - patch -Np1 -i "${srcdir}/04-correct-output-makefile-location.patch" - patch -Np1 -i "${srcdir}/05-add-copyright.patch" - patch -Np1 -i "${srcdir}/06-hook-just-after-merging-perdir-config.patch" - patch -Np1 -i "${srcdir}/07-base-functionality.patch" - patch -Np1 -i "${srcdir}/08-max-clients-per-vhost.patch" - patch -Np1 -i "${srcdir}/09-capabilities.patch" - patch -Np1 -i "${srcdir}/10-nice.patch" - patch -Np1 -i "${srcdir}/11-fix-htaccess-reads-for-persistent-connections.patch" - - autoconf - fi - mkdir build-${mpm} - pushd build-${mpm} - ../configure --enable-layout=Arch \ - --enable-modules=all \ - --enable-mods-shared=all \ - --enable-so \ - --enable-suexec \ - --with-suexec-caller=http \ - --with-suexec-docroot=/srv/http \ - --with-suexec-logfile=/var/log/httpd/suexec.log \ - --with-suexec-bin=/usr/sbin/suexec \ - --with-suexec-uidmin=99 --with-suexec-gidmin=99 \ - --enable-ldap --enable-authnz-ldap \ - --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \ - --enable-ssl --with-ssl \ - --enable-deflate --enable-cgid \ - --enable-proxy --enable-proxy-connect \ - --enable-proxy-http --enable-proxy-ftp \ - --enable-dbd \ - --with-apr=/usr/bin/apr-1-config \ - --with-apr-util=/usr/bin/apu-1-config \ - --with-pcre=/usr \ - --with-mpm=${mpm} - make - if [ "${mpm}" = "prefork" ]; then - make DESTDIR="${pkgdir}" install - else - install -m755 httpd "${pkgdir}/usr/sbin/httpd.${mpm}" - fi - popd - done - - install -D -m755 "${srcdir}/httpd" "${pkgdir}/etc/rc.d/httpd" - install -D -m644 "${srcdir}/httpd.logrotate" "${pkgdir}/etc/logrotate.d/httpd" - install -D -m644 "${srcdir}/apache.conf.d" "${pkgdir}/etc/conf.d/apache" - - # symlinks for /etc/httpd - ln -fs /var/log/httpd "${pkgdir}/etc/httpd/logs" - ln -fs /var/run/httpd "${pkgdir}/etc/httpd/run" - ln -fs /usr/lib/httpd/modules "${pkgdir}/etc/httpd/modules" - ln -fs /usr/lib/httpd/build "${pkgdir}/etc/httpd/build" - - # set sane defaults - sed -e 's#/usr/lib/httpd/modules/#modules/#' \ - -e 's|#\(Include conf/extra/httpd-multilang-errordoc.conf\)|\1|' \ - -e 's|#\(Include conf/extra/httpd-autoindex.conf\)|\1|' \ - -e 's|#\(Include conf/extra/httpd-languages.conf\)|\1|' \ - -e 's|#\(Include conf/extra/httpd-userdir.conf\)|\1|' \ - -e 's|#\(Include conf/extra/httpd-default.conf\)|\1|' \ - -i "${pkgdir}/etc/httpd/conf/httpd.conf" - - # cleanup - rm -rf "${pkgdir}/usr/share/httpd/manual" - rm -rf "${pkgdir}/etc/httpd/conf/original" - rm -rf "${pkgdir}/srv/" - rm -rf "${pkgdir}/usr/bin" -} diff --git a/extra/apache/apache.conf.d b/extra/apache/apache.conf.d deleted file mode 100644 index c6d0ebf52..000000000 --- a/extra/apache/apache.conf.d +++ /dev/null @@ -1,15 +0,0 @@ -# Configuration file for the httpd service. - -# -# The default processing model (MPM) is the process-based -# 'prefork' model. A thread-based model, 'worker', is also -# available, but does not work with some modules (such as PHP). -# The service must be stopped before changing this variable. -# -#HTTPD=/usr/sbin/httpd.worker - -# -# To pass additional options (for instance, -D definitions) to the -# httpd binary at startup, set OPTIONS here. -# -#OPTIONS= diff --git a/extra/apache/apachectl-confd.patch b/extra/apache/apachectl-confd.patch deleted file mode 100644 index d0f4b699e..000000000 --- a/extra/apache/apachectl-confd.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- support/apachectl.in.orig 2010-03-06 18:09:11.000000000 +0100 -+++ support/apachectl.in 2010-03-06 18:12:31.000000000 +0100 -@@ -56,6 +56,12 @@ - # the URL to your server's mod_status status page. If you do not - # have one, then status and fullstatus will not work. - STATUSURL="http://localhost:@PORT@/server-status" -+ -+# Source /etc/conf.d/apache for $HTTPD setting, etc. -+if [ -r /etc/conf.d/apache ]; then -+ . /etc/conf.d/apache -+fi -+ - # - # Set this variable to a command that increases the maximum - # number of file descriptors allowed per child process. This is diff --git a/extra/apache/arch.layout b/extra/apache/arch.layout deleted file mode 100644 index ab59db84b..000000000 --- a/extra/apache/arch.layout +++ /dev/null @@ -1,22 +0,0 @@ - - prefix: /etc/httpd - exec_prefix: /usr - bindir: /usr/bin - sbindir: /usr/sbin - libdir: /usr/lib/httpd - libexecdir: /usr/lib/httpd/modules - mandir: /usr/share/man - sysconfdir: /etc/httpd/conf - datadir: /usr/share/httpd - installbuilddir: /usr/lib/httpd/build - errordir: /usr/share/httpd/error - iconsdir: /usr/share/httpd/icons - htdocsdir: /srv/http - manualdir: /usr/share/httpd/manual - cgidir: /srv/http/cgi-bin - includedir: /usr/include/httpd - localstatedir: /var - runtimedir: /var/run/httpd - logfiledir: /var/log/httpd - proxycachedir: /var/cache/httpd - \ No newline at end of file diff --git a/extra/apache/httpd b/extra/apache/httpd deleted file mode 100755 index 6fa9c3cc7..000000000 --- a/extra/apache/httpd +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -daemon_name=httpd - -. /etc/rc.conf -. /etc/rc.d/functions - -APACHECTL=/usr/sbin/apachectl - -case "$1" in - start) - stat_busy "Starting Apache Web Server" - [ ! -d /var/run/httpd ] && install -d /var/run/httpd - if $APACHECTL start >/dev/null ; then - add_daemon $daemon_name - stat_done - else - stat_fail - exit 1 - fi - ;; - - stop) - stat_busy "Stopping Apache Web Server" - if $APACHECTL stop >/dev/null ; then - rm_daemon $daemon_name - stat_done - else - stat_fail - exit 1 - fi - ;; - - reload) - stat_busy "Reloading Apache Web Server" - if $APACHECTL graceful >/dev/null ; then - add_daemon $daemon_name - stat_done - else - stat_fail - exit 1 - fi - ;; - - restart) - stat_busy "Restarting Apache Web Server" - if $APACHECTL restart >/dev/null ; then - add_daemon $daemon_name - stat_done - else - stat_fail - exit 1 - fi - ;; - - status) - stat_busy "Checking Apache Web Server status"; - ck_status $daemon_name - ;; - - *) - echo "usage: $0 {start|stop|reload|restart|status}" -esac - -exit 0 diff --git a/extra/apache/httpd.logrotate b/extra/apache/httpd.logrotate deleted file mode 100644 index a723d20d2..000000000 --- a/extra/apache/httpd.logrotate +++ /dev/null @@ -1,6 +0,0 @@ -/var/log/httpd/*log { - missingok - postrotate - /bin/kill -HUP `cat /var/run/httpd/httpd.pid 2>/dev/null` 2> /dev/null || true - endscript -} From 642da4263d8fd902cb75a417a8dd7f26cb3f343b Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 8 Feb 2012 10:27:50 -0500 Subject: [PATCH 05/27] extra/libvorbis to 1.3.3-1 --- extra/libvorbis/PKGBUILD | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/extra/libvorbis/PKGBUILD b/extra/libvorbis/PKGBUILD index 64bb13b6e..d55e82c2e 100644 --- a/extra/libvorbis/PKGBUILD +++ b/extra/libvorbis/PKGBUILD @@ -2,33 +2,33 @@ # Contributor: dorphell # Contributor: John Proctor -# ALARM: Kevin Mihelich +# ALARM: Kevin Mihelich # - remove Arch's CFLAGS replacement, doesn't work with our flags plugrel=1 pkgname=libvorbis -pkgver=1.3.2 +pkgver=1.3.3 pkgrel=1 pkgdesc="Vorbis codec library" arch=('i686' 'x86_64') -license=('custom') -url="http://www.xiph.org/ogg/vorbis/" +license=('BSD') +url="http://www.xiph.org/vorbis/" depends=('libogg') options=('!libtool') source=(http://downloads.xiph.org/releases/vorbis/${pkgname}-${pkgver}.tar.gz) -md5sums=('c870b9bd5858a0ecb5275c14486d9554') +md5sums=('6b1a36f0d72332fae5130688e65efe1f') build() { - cd ${srcdir}/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" #-march=i686 optimizes too much, strip it out #CFLAGS=${CFLAGS/-march=$CARCH} ./configure --prefix=/usr --disable-static - ./configure --prefix=/usr --disable-static + LIBS+="-lm" ./configure --prefix=/usr --disable-static make } package() { - cd ${srcdir}/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install install -Dm644 COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE" } From 1ff61dbc551689ec9051bd1a1500c410db64d909 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 8 Feb 2012 10:33:01 -0500 Subject: [PATCH 06/27] extra/qt3 to 3.3.8b-1 --- extra/qt3/PKGBUILD | 33 ++--- extra/qt3/mysql.patch | 47 ------- extra/qt3/qt-copy-kde-patches.tar.bz2 | Bin 31498 -> 29688 bytes extra/qt3/qt-font-default-subst.diff | 77 ------------ extra/qt3/qt3-png15.patch | 172 +++++++++++++------------- extra/qt3/utf8-bug-qt3.diff | 101 --------------- 6 files changed, 98 insertions(+), 332 deletions(-) delete mode 100644 extra/qt3/mysql.patch delete mode 100644 extra/qt3/qt-font-default-subst.diff delete mode 100644 extra/qt3/utf8-bug-qt3.diff diff --git a/extra/qt3/PKGBUILD b/extra/qt3/PKGBUILD index 4eb941140..b4cb5fc36 100644 --- a/extra/qt3/PKGBUILD +++ b/extra/qt3/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 145340 2011-12-21 20:47:29Z andrea $ +# $Id: PKGBUILD 149356 2012-02-07 05:40:02Z eric $ # Maintainer: Eric Bélanger # ALARM: Kevin Mihelich @@ -8,8 +8,9 @@ plugrel=1 pkgname=qt3 -pkgver=3.3.8 -pkgrel=22 +pkgver=3.3.8b +pkgrel=1 +epoch=1 pkgdesc="The QT3 gui toolkit" arch=('i686' 'x86_64') url="http://www.trolltech.com/products/qt/index.html" @@ -20,18 +21,14 @@ makedepends=('mysql' 'postgresql' 'unixodbc' 'sqlite3') optdepends=('libmysqlclient' 'postgresql-libs' 'unixodbc') options=('!libtool') install=qt.install -source=(ftp://ftp.trolltech.com/qt/source/qt-x11-free-${pkgver}.tar.bz2 - qt.profile qt3-png15.patch qt-copy-kde-patches.tar.bz2 - qt-patches.tar.bz2 utf8-bug-qt3.diff qt-font-default-subst.diff - mysql.patch eastern_asian_languagues.diff qt-odbc.patch gcc-4.6.patch arm.patch) -sha1sums=('91b192cb8e80679607d24ae35d6e20ed68d149d7' +source=(ftp://ftp.trolltech.com/qt/source/qt-x11-free-${pkgver}.tar.gz + qt.profile qt3-png15.patch qt-copy-kde-patches.tar.bz2 qt-patches.tar.bz2 + eastern_asian_languagues.diff qt-odbc.patch gcc-4.6.patch arm.patch) +sha1sums=('745def6250dc7f337dbb265e20bf38dcb41fd854' 'd2e257a9011208b2cb81b9cf47915b9a2f9dab83' '3d19510c46016a1a211d97bf8f82b01498b1b33c' - '9cb2e5bec782069692ee337cfa171539d9d73753' + '33418e5b117458af23c72cdbffc0c339bc34bdc4' '116afa0e737bdf27ea27f9b3653aeb56db9ec151' - 'ca5ecb29c7f1c826d48703339a3371038e306bb7' - 'd928ff55adb52c4bab2fb268df022651551cd70c' - 'bb6aad81cce143c23ff7840b1d79f6b2007a0c04' '40c7b8f06a21f809ddeb8b5560e9da63ccac6a17' '1346320614f6f86fbeb10b9fbad721dea29f5b61' 'd9b83b8f6f9c8bd98d290dc1d0e9913a00b62c3f' @@ -49,18 +46,12 @@ build() { cd "${srcdir}"/qt-x11-free-${pkgver} # apply qt patches from kde.org for i in ../qt-copy-kde-patches/*; do - patch -Np0 -i $i + patch -p0 -i $i done # apply other qt patches and one security fix from debian/gentoo for i in ../qt-patches/*; do - patch -Np1 -i $i + patch -p1 -i $i done - # fix utf8 bug - patch -p0 -i "${srcdir}"/utf8-bug-qt3.diff - # fix asia fonts - patch -p0 -i "${srcdir}"/qt-font-default-subst.diff - # fix segfaults on exit when using mysql DB driver - patch -p0 -i "${srcdir}"/mysql.patch # fix CJK font/chars select error (FS#11245) patch -p1 -i "${srcdir}"/eastern_asian_languagues.diff # fix build problem against new unixODBC @@ -68,7 +59,7 @@ build() { # fix build with gcc 4.6.0 patch -p1 -i "${srcdir}"/gcc-4.6.patch - patch -p0 -i "${srcdir}"/qt3-png15.patch + patch -p0 -i "${srcdir}"/qt3-png15.patch # Arch Linux ARM patch patch -p1 -i ${srcdir}/arm.patch diff --git a/extra/qt3/mysql.patch b/extra/qt3/mysql.patch deleted file mode 100644 index 5f61edc67..000000000 --- a/extra/qt3/mysql.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- src/sql/drivers/mysql/qsql_mysql.cpp -+++ src/sql/drivers/mysql/qsql_mysql.cpp -@@ -37,7 +37,6 @@ - #include "qsql_mysql.h" - #include - --#include - #include - #include - #include -@@ -341,14 +340,6 @@ int QMYSQLResult::numRowsAffected() - } - - ///////////////////////////////////////////////////////// --static void qServerEnd() --{ --#ifndef Q_NO_MYSQL_EMBEDDED --# if MYSQL_VERSION_ID >= 40000 -- mysql_server_end(); --# endif // MYSQL_VERSION_ID --#endif // Q_NO_MYSQL_EMBEDDED --} - - static void qServerInit() - { -@@ -366,9 +357,7 @@ static void qServerInit() - qWarning( "QMYSQLDriver::qServerInit: unable to start server." ); - # endif - } -- qAddPostRoutine(qServerEnd); - init = TRUE; -- - # endif // MYSQL_VERSION_ID - #endif // Q_NO_MYSQL_EMBEDDED - } -@@ -411,6 +400,11 @@ QMYSQLDriver::~QMYSQLDriver() - QSqlOpenExtension *ext = qSqlOpenExtDict()->take( this ); - delete ext; - } -+#ifndef Q_NO_MYSQL_EMBEDDED -+# if MYSQL_VERSION_ID > 40000 -+ mysql_server_end(); -+# endif -+#endif - } - - bool QMYSQLDriver::hasFeature( DriverFeature f ) const diff --git a/extra/qt3/qt-copy-kde-patches.tar.bz2 b/extra/qt3/qt-copy-kde-patches.tar.bz2 index 19d8999635e80f4846fb48f9d2dd29e23e31a682..519f7173ac9cbfc6c082306b382f4c4baf7ca4b1 100644 GIT binary patch literal 29688 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%0Dy>O3(= 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 Btj7QV diff --git a/extra/qt3/qt-font-default-subst.diff b/extra/qt3/qt-font-default-subst.diff deleted file mode 100644 index 3e286f74e..000000000 --- a/extra/qt3/qt-font-default-subst.diff +++ /dev/null @@ -1,77 +0,0 @@ ---- src/kernel/qfontdatabase_x11.cpp -+++ src/kernel/qfontdatabase_x11.cpp -@@ -1589,15 +1589,6 @@ QFontEngine *loadEngine( QFont::Script s - if (script == QFont::Latin) - // add Euro character - FcCharSetAddChar(cs, 0x20ac); -- if (script == QFont::Han_SimplifiedChinese) -- FcCharSetAddChar(cs, 0x3400); -- if (script == QFont::Han_TraditionalChinese){ -- FcCharSetAddChar(cs, 0x3435); -- FcCharSetAddChar(cs, 0xE000); -- FcCharSetAddChar(cs, 0xF6B1); -- } -- if (script == QFont::MiscellaneousSymbols) -- FcCharSetAddChar(cs, 0x2714); - FcPatternAddCharSet(pattern, FC_CHARSET, cs); - FcCharSetDestroy(cs); - } -@@ -1813,7 +1804,11 @@ static QFontEngine *loadFontConfigFont(c - FcPatternPrint(pattern); - #endif - -+ // XftFontMatch calls the right ConfigSubstitute variants, but as we use -+ // FcFontMatch/Sort here we have to do it manually. - FcConfigSubstitute(0, pattern, FcMatchPattern); -+ XftDefaultSubstitute(QPaintDevice::x11AppDisplay(), QPaintDevice::x11AppScreen(), pattern); -+ - // qDebug("1: pattern contains:"); - // FcPatternPrint(pattern); - -@@ -1847,10 +1842,6 @@ static QFontEngine *loadFontConfigFont(c - value.u.s = (const FcChar8 *)cs.data(); - FcPatternAddWeak(pattern, FC_FAMILY, value, FcTrue); - } --#ifdef FONT_MATCH_DEBUG -- printf("final pattern contains:\n"); -- FcPatternPrint(pattern); --#endif - } - - if (script != QFont::Unicode) { -@@ -1860,19 +1851,15 @@ static QFontEngine *loadFontConfigFont(c - if (script == QFont::Latin) - // add Euro character - FcCharSetAddChar(cs, 0x20ac); -- if (script == QFont::Han_SimplifiedChinese) -- FcCharSetAddChar(cs, 0x3400); -- if (script == QFont::Han_TraditionalChinese) { -- FcCharSetAddChar(cs, 0x3435); -- FcCharSetAddChar(cs, 0xE000); -- FcCharSetAddChar(cs, 0xF6B1); -- } -- if (script == QFont::MiscellaneousSymbols) -- FcCharSetAddChar(cs, 0x2714); - FcPatternAddCharSet(pattern, FC_CHARSET, cs); - FcCharSetDestroy(cs); - } - -+#ifdef FONT_MATCH_DEBUG -+ printf("final pattern contains:\n"); -+ FcPatternPrint(pattern); -+#endif -+ - QFontEngine *fe = 0; - - for( int jj = (FcGetVersion() >= 20392 ? 0 : 1); jj < 2; ++jj ) { ---- src/kernel/qfontdatabase.cpp -+++ src/kernel/qfontdatabase.cpp -@@ -554,7 +554,7 @@ static const unsigned short sample_chars - // GeometricSymbols, - { 0x2500, 0x0 }, - // MiscellaneousSymbols, -- { 0x2640, 0x0 }, -+ { 0x2640, 0x2714, 0x0 }, - // EnclosedAndSquare, - { 0x2460, 0x0 }, - // Braille, diff --git a/extra/qt3/qt3-png15.patch b/extra/qt3/qt3-png15.patch index 29517b796..e64fea36a 100644 --- a/extra/qt3/qt3-png15.patch +++ b/extra/qt3/qt3-png15.patch @@ -4,16 +4,16 @@ $NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $ +++ src/kernel/qpngio.cpp @@ -43,6 +43,7 @@ #include "qiodevice.h" - + #include +#include - - + + #ifdef Q_OS_TEMP @@ -123,9 +124,24 @@ void setup_qt( QImage& image, png_struct png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, - 0, 0, 0); - + 0, 0, 0); + + png_colorp info_ptr_palette = NULL; + int info_ptr_num_palette = 0; + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) { @@ -30,44 +30,44 @@ $NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $ + + if ( color_type == PNG_COLOR_TYPE_GRAY ) { - // Black & White or 8-bit grayscale + // Black & White or 8-bit grayscale - if ( bit_depth == 1 && info_ptr->channels == 1 ) { + if ( bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1 ) { - png_set_invert_mono( png_ptr ); - png_read_update_info( png_ptr, info_ptr ); - if (!image.create( width, height, 1, 2, QImage::BigEndian )) + png_set_invert_mono( png_ptr ); + png_read_update_info( png_ptr, info_ptr ); + if (!image.create( width, height, 1, 2, QImage::BigEndian )) @@ -159,7 +175,7 @@ void setup_qt( QImage& image, png_struct - image.setColor( i, qRgba(c,c,c,0xff) ); - } - if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { + image.setColor( i, qRgba(c,c,c,0xff) ); + } + if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { - const int g = info_ptr->trans_values.gray; + const int g = info_ptr_trans_color->gray; - if (g < ncols) { - image.setAlphaBuffer(TRUE); - image.setColor(g, image.color(g) & RGB_MASK); + if (g < ncols) { + image.setAlphaBuffer(TRUE); + image.setColor(g, image.color(g) & RGB_MASK); @@ -168,7 +184,7 @@ void setup_qt( QImage& image, png_struct - } + } } else if ( color_type == PNG_COLOR_TYPE_PALETTE && png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE) - && info_ptr->num_palette <= 256 ) + && info_ptr_num_palette <= 256 ) { - // 1-bit and 8-bit color - if ( bit_depth != 1 ) + // 1-bit and 8-bit color + if ( bit_depth != 1 ) @@ -176,28 +192,28 @@ void setup_qt( QImage& image, png_struct - png_read_update_info( png_ptr, info_ptr ); - png_get_IHDR(png_ptr, info_ptr, - &width, &height, &bit_depth, &color_type, 0, 0, 0); + png_read_update_info( png_ptr, info_ptr ); + png_get_IHDR(png_ptr, info_ptr, + &width, &height, &bit_depth, &color_type, 0, 0, 0); - if (!image.create(width, height, bit_depth, info_ptr->num_palette, + if (!image.create(width, height, bit_depth, info_ptr_num_palette, - QImage::BigEndian)) - return; - int i = 0; - if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { - image.setAlphaBuffer( TRUE ); + QImage::BigEndian)) + return; + int i = 0; + if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) { + image.setAlphaBuffer( TRUE ); - while ( i < info_ptr->num_trans ) { + while ( i < info_ptr_num_trans ) { - image.setColor(i, qRgba( + image.setColor(i, qRgba( - info_ptr->palette[i].red, - info_ptr->palette[i].green, - info_ptr->palette[i].blue, @@ -76,104 +76,104 @@ $NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $ + info_ptr_palette[i].green, + info_ptr_palette[i].blue, + info_ptr_trans_alpha[i] - ) - ); - i++; - } - } + ) + ); + i++; + } + } - while ( i < info_ptr->num_palette ) { + while ( i < info_ptr_num_palette ) { - image.setColor(i, qRgba( + image.setColor(i, qRgba( - info_ptr->palette[i].red, - info_ptr->palette[i].green, - info_ptr->palette[i].blue, + info_ptr_palette[i].red, + info_ptr_palette[i].green, + info_ptr_palette[i].blue, - 0xff - ) - ); + 0xff + ) + ); @@ -284,7 +300,7 @@ void read_png_image(QImageIO* iio) - return; + return; } - + - if (setjmp(png_ptr->jmpbuf)) { + if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); - iio->setStatus(-4); - return; + png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); + iio->setStatus(-4); + return; @@ -469,7 +485,7 @@ bool QPNGImageWriter::writeImage(const Q - return FALSE; + return FALSE; } - + - if (setjmp(png_ptr->jmpbuf)) { + if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &info_ptr); - return FALSE; + png_destroy_write_struct(&png_ptr, &info_ptr); + return FALSE; } @@ -491,10 +507,16 @@ bool QPNGImageWriter::writeImage(const Q - + png_set_write_fn(png_ptr, (void*)this, qpiw_write_fn, qpiw_flush_fn); - + +#warning XXXtnn not too sure about this -+/* ++/* +according to png.h, channels is only used on read, not writes, so we +should be able to comment this out. + info_ptr->channels = - (image.depth() == 32) - ? (image.hasAlphaBuffer() ? 4 : 3) - : 1; + (image.depth() == 32) + ? (image.hasAlphaBuffer() ? 4 : 3) + : 1; +*/ - + png_set_IHDR(png_ptr, info_ptr, image.width(), image.height(), - image.depth() == 1 ? 1 : 8 /* per channel */, + image.depth() == 1 ? 1 : 8 /* per channel */, @@ -504,11 +526,12 @@ bool QPNGImageWriter::writeImage(const Q - : PNG_COLOR_TYPE_RGB - : PNG_COLOR_TYPE_PALETTE, 0, 0, 0); - + : PNG_COLOR_TYPE_RGB + : PNG_COLOR_TYPE_PALETTE, 0, 0, 0); + + png_color_8 sig_bit; + sig_bit.red = 8; + sig_bit.green = 8; + sig_bit.blue = 8; + png_set_sBIT(png_ptr, info_ptr, &sig_bit); - + - //png_set_sBIT(png_ptr, info_ptr, 8); - info_ptr->sig_bit.red = 8; - info_ptr->sig_bit.green = 8; - info_ptr->sig_bit.blue = 8; - + if (image.depth() == 1 && image.bitOrder() == QImage::LittleEndian) png_set_packswap(png_ptr); @@ -522,11 +545,14 @@ bool QPNGImageWriter::writeImage(const Q - png_set_PLTE(png_ptr, info_ptr, palette, num_palette); - int* trans = new int[num_palette]; - int num_trans = 0; + png_set_PLTE(png_ptr, info_ptr, palette, num_palette); + int* trans = new int[num_palette]; + int num_trans = 0; + png_colorp info_ptr_palette = NULL; + int tmp; + png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &tmp); - for (int i=0; ipalette[i].red = qRed(rgb); - info_ptr->palette[i].green = qGreen(rgb); - info_ptr->palette[i].blue = qBlue(rgb); + info_ptr_palette[i].red = qRed(rgb); + info_ptr_palette[i].green = qGreen(rgb); + info_ptr_palette[i].blue = qBlue(rgb); - if (image.hasAlphaBuffer()) { - trans[i] = rgb >> 24; - if (trans[i] < 255) { + if (image.hasAlphaBuffer()) { + trans[i] = rgb >> 24; + if (trans[i] < 255) { @@ -534,6 +560,7 @@ bool QPNGImageWriter::writeImage(const Q - } - } - } + } + } + } + png_set_PLTE(png_ptr, info_ptr, info_ptr_palette, num_palette); - if (num_trans) { - copy_trans = new png_byte[num_trans]; - for (int i=0; isig_bit.alpha = 8; + png_color_8p sig_bit; @@ -181,26 +181,26 @@ $NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $ + sig_bit->alpha = 8; + png_set_sBIT(png_ptr, info_ptr, sig_bit); } - + // Swap ARGB to RGBA (normal PNG format) before saving on @@ -1030,7 +1060,7 @@ int QPNGFormat::decode(QImage& img, QIma - return -1; - } - + return -1; + } + - if (setjmp((png_ptr)->jmpbuf)) { + if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_read_struct(&png_ptr, &info_ptr, 0); - image = 0; - return -1; + png_destroy_read_struct(&png_ptr, &info_ptr, 0); + image = 0; + return -1; @@ -1057,7 +1087,7 @@ int QPNGFormat::decode(QImage& img, QIma - + if ( !png_ptr ) return 0; - + - if (setjmp(png_ptr->jmpbuf)) { + if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_read_struct(&png_ptr, &info_ptr, 0); - image = 0; - state = MovieStart; + png_destroy_read_struct(&png_ptr, &info_ptr, 0); + image = 0; + state = MovieStart; @@ -1117,7 +1147,7 @@ void QPNGFormat::end(png_structp png, pn consumer->frameDone(QPoint(offx,offy),r); consumer->end(); @@ -208,5 +208,5 @@ $NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $ - unused_data = (int)png->buffer_size; // Since libpng doesn't tell us + unused_data = png_process_data_pause(png, 0); } - + #ifdef PNG_USER_CHUNKS_SUPPORTED diff --git a/extra/qt3/utf8-bug-qt3.diff b/extra/qt3/utf8-bug-qt3.diff deleted file mode 100644 index 43e84a99f..000000000 --- a/extra/qt3/utf8-bug-qt3.diff +++ /dev/null @@ -1,101 +0,0 @@ ---- src/codecs/qutfcodec.cpp -+++ src/codecs/qutfcodec.cpp -@@ -154,6 +154,7 @@ - - class QUtf8Decoder : public QTextDecoder { - uint uc; -+ uint min_uc; - int need; - bool headerDone; - public: -@@ -167,8 +168,9 @@ - result.setLength( len ); // worst case - QChar *qch = (QChar *)result.unicode(); - uchar ch; -+ int error = -1; - for (int i=0; i= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) { -+ *qch++ = QChar::replacement; - } else { - if (headerDone || QChar(uc) != QChar::byteOrderMark) - *qch++ = uc; -@@ -190,6 +194,7 @@ - } - } else { - // error -+ i = error; - *qch++ = QChar::replacement; - need = 0; - } -@@ -200,12 +205,21 @@ - } else if ((ch & 0xe0) == 0xc0) { - uc = ch & 0x1f; - need = 1; -+ error = i; -+ min_uc = 0x80; - } else if ((ch & 0xf0) == 0xe0) { - uc = ch & 0x0f; - need = 2; -+ error = i; -+ min_uc = 0x800; - } else if ((ch&0xf8) == 0xf0) { - uc = ch & 0x07; - need = 3; -+ error = i; -+ min_uc = 0x10000; -+ } else { -+ // error -+ *qch++ = QChar::replacement; - } - } - } ---- src/tools/qstring.cpp -+++ src/tools/qstring.cpp -@@ -5805,6 +5805,7 @@ - result.setLength( len ); // worst case - QChar *qch = (QChar *)result.unicode(); - uint uc = 0; -+ uint min_uc = 0; - int need = 0; - int error = -1; - uchar ch; -@@ -5822,6 +5823,12 @@ - unsigned short low = uc%0x400 + 0xdc00; - *qch++ = QChar(high); - *qch++ = QChar(low); -+ } else if (uc < min_uc || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) { -+ // overlong seqence, UTF16 surrogate or BOM -+ i = error; -+ qch = addOne(qch, result); -+ *qch++ = QChar(0xdbff); -+ *qch++ = QChar(0xde00+((uchar)utf8[i])); - } else { - *qch++ = uc; - } -@@ -5844,14 +5851,17 @@ - uc = ch & 0x1f; - need = 1; - error = i; -+ min_uc = 0x80; - } else if ((ch & 0xf0) == 0xe0) { - uc = ch & 0x0f; - need = 2; - error = i; -+ min_uc = 0x800; - } else if ((ch&0xf8) == 0xf0) { - uc = ch & 0x07; - need = 3; - error = i; -+ min_uc = 0x10000; - } else { - // Error - qch = addOne(qch, result); From dd64e26f7c4582e07040d1f6b0935aff789303ad Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Fri, 10 Feb 2012 10:22:55 -0500 Subject: [PATCH 07/27] extra/pixman to 0.24.4-2 --- extra/pixman/PKGBUILD | 9 ++-- ...pezoids-where-top-is-above-the-edges.patch | 47 ------------------- 2 files changed, 3 insertions(+), 53 deletions(-) delete mode 100644 extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch diff --git a/extra/pixman/PKGBUILD b/extra/pixman/PKGBUILD index 3a310762d..5b402e9fb 100644 --- a/extra/pixman/PKGBUILD +++ b/extra/pixman/PKGBUILD @@ -8,7 +8,7 @@ plugrel=1 pkgname=pixman -pkgver=0.24.2 +pkgver=0.24.4 pkgrel=2 pkgdesc="The pixel-manipulation library for X and cairo" arch=(i686 x86_64) @@ -16,14 +16,11 @@ url="http://xorg.freedesktop.org" license=('custom') depends=('glibc') options=('!libtool') -source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2 -revert-reject-trapezoids-where-top-is-above-the-edges.patch) -sha1sums=('233eed3cd16ee1b2a842140477503d2c68b74418' - 'ee36251d47ccefd5e276cabdba9917fbb2be787a') +source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) +sha1sums=('683450f917015366ac7918fc517c76801aeff374') build() { cd "${srcdir}/${pkgname}-${pkgver}" - patch -Np1 -i "${srcdir}/revert-reject-trapezoids-where-top-is-above-the-edges.patch" [[ $CARCH = "arm" ]] && CONFIG="--disable-arm-simd --disable-arm-neon --disable-arm-iwmmxt" [[ $CARCH = "armv7h" ]] && CONFIG="--disable-arm-neon --disable-arm-iwmmxt" ./configure --prefix=/usr --disable-static $CONFIG diff --git a/extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch b/extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch deleted file mode 100644 index e661db57c..000000000 --- a/extra/pixman/revert-reject-trapezoids-where-top-is-above-the-edges.patch +++ /dev/null @@ -1,47 +0,0 @@ -From e5555d7a749c90288463ed1c294f58963c607e52 Mon Sep 17 00:00:00 2001 -From: Søren Sandmann Pedersen -Date: Wed, 25 Jan 2012 19:03:05 +0000 -Subject: Revert "Reject trapezoids where top (botttom) is above (below) the edges" - -Cairo 1.10 will sometimes generate trapezoids like this, so we can't -consider them invalid. Fixes bug 45009, reported by Michael Biebl. - -This reverts commit 2437ae80e5066dec9fe52f56b016bf136d7cea06. ---- -diff --git a/pixman/pixman.h b/pixman/pixman.h -index 20ff496..18d9513 100644 ---- a/pixman/pixman.h -+++ b/pixman/pixman.h -@@ -908,14 +908,10 @@ struct pixman_triangle - }; - - /* whether 't' is a well defined not obviously empty trapezoid */ --#define pixman_trapezoid_valid(t) \ -- ((t)->left.p1.y != (t)->left.p2.y && \ -- (t)->right.p1.y != (t)->right.p2.y && \ -- (int) ((t)->bottom - (t)->top) > 0 && \ -- (t)->bottom <= (t)->left.p2.y && \ -- (t)->bottom <= (t)->right.p2.y && \ -- (t)->top >= (t)->left.p1.y && \ -- (t)->top >= (t)->right.p1.y) -+#define pixman_trapezoid_valid(t) \ -+ ((t)->left.p1.y != (t)->left.p2.y && \ -+ (t)->right.p1.y != (t)->right.p2.y && \ -+ (int) ((t)->bottom - (t)->top) > 0) - - struct pixman_span_fix - { -diff --git a/test/composite-traps-test.c b/test/composite-traps-test.c -index de518d8..ff03b50 100644 ---- a/test/composite-traps-test.c -+++ b/test/composite-traps-test.c -@@ -251,6 +251,6 @@ test_composite (int testnum, - int - main (int argc, const char *argv[]) - { -- return fuzzer_test_main("composite traps", 40000, 0x4346479C, -+ return fuzzer_test_main("composite traps", 40000, 0xE3112106, - test_composite, argc, argv); - } --- -cgit v0.9.0.2-2-gbebe From 7e648426d9e7309f5ecde46daa8d9559f57cae36 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Fri, 10 Feb 2012 10:24:10 -0500 Subject: [PATCH 08/27] community/percona-server to 5.5.20_rel24.1 --- community/percona-server/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community/percona-server/PKGBUILD b/community/percona-server/PKGBUILD index 6bb804f18..a5616a41b 100644 --- a/community/percona-server/PKGBUILD +++ b/community/percona-server/PKGBUILD @@ -6,7 +6,7 @@ plugrel=1 pkgname=percona-server -pkgver=5.5.19_rel24.0 +pkgver=5.5.20_rel24.1 pkgrel=1 pkgdesc="A backwards-compatible drop-in replacement for MySQL that provides improved performance, diagnostics and instrumentation, and manageability of the server" arch=('i686' 'x86_64') From eb886eb2e8f5f88864afd69e041159584ebcd307 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 11 Feb 2012 00:11:17 -0500 Subject: [PATCH 09/27] core/linux to 3.1.10-3 --- community/percona-server/PKGBUILD | 2 +- core/linux/PKGBUILD | 4 ++-- core/linux/archlinuxarm.patch | 16 +++++++++++++++- core/linux/linux.install | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/community/percona-server/PKGBUILD b/community/percona-server/PKGBUILD index a5616a41b..5bba96a06 100644 --- a/community/percona-server/PKGBUILD +++ b/community/percona-server/PKGBUILD @@ -105,7 +105,7 @@ package() { install -dm700 "${pkgdir}"/var/lib/mysql } -md5sums=('eb8c21bbb8179e0a4709d51c037e682c' +md5sums=('0f61fde172ed1168a3ca9b7b003a6698' '243864805611764a7e5883c1dba7afd8' '1c949c0dbea5206af0db14942d9927b6' '9eb0ad531d162e031a2bcc08a5ab3bc5') diff --git a/core/linux/PKGBUILD b/core/linux/PKGBUILD index f982017fe..9c994c94b 100644 --- a/core/linux/PKGBUILD +++ b/core/linux/PKGBUILD @@ -10,7 +10,7 @@ pkgname=('linux' 'linux-headers') _kernelname=${pkgname#linux} _basekernel=3.1 pkgver=${_basekernel}.10 -pkgrel=2 +pkgrel=3 arch=('arm') url="http://www.kernel.org/" license=('GPL2') @@ -30,7 +30,7 @@ source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.bz2 'usb-add-reset-resume-quirk-for-several-webcams.patch') md5sums=('8d43453f8159b2332ad410b19d86a931' 'a8e1c25a93a685ec2a1c3a808715fe9d' - 'f7b581e728911995dee392c11fd2b2fd' + '7f2c10e9e8ab4decaaf1dd5437a775a3' 'f5d3635da03cb45904bedd69b47133de' '3f64ed9d71499fe9293dc671f4e4087e' '29628745258df910abfb8cb24ca3ccd9' diff --git a/core/linux/archlinuxarm.patch b/core/linux/archlinuxarm.patch index 39efa7b44..c869268d2 100644 --- a/core/linux/archlinuxarm.patch +++ b/core/linux/archlinuxarm.patch @@ -181,7 +181,7 @@ diff -urN a/arch/arm/mach-kirkwood/goflexhome-setup.c b/arch/arm/mach-kirkwood/g + diff -urN a/arch/arm/mach-kirkwood/goflexnet-setup.c b/arch/arm/mach-kirkwood/goflexnet-setup.c --- a/arch/arm/mach-kirkwood/goflexnet-setup.c 1970-01-01 00:00:00.000000000 +0000 -+++ b/arch/arm/mach-kirkwood/goflexnet-setup.c 2012-01-29 18:10:32.631138668 +0000 ++++ b/arch/arm/mach-kirkwood/goflexnet-setup.c 2012-02-11 03:24:16.961504946 +0000 @@ -0,0 +1,176 @@ +/* + * arch/arm/mach-kirkwood/goflexnet-setup.c @@ -1262,3 +1262,17 @@ diff -urN a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/s else kirkwood_sdio_init(&sheevaplug_mvsdio_data); +diff -urN a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c +--- a/arch/arm/plat-orion/common.c 2011-10-24 07:10:05.000000000 +0000 ++++ b/arch/arm/plat-orion/common.c 2012-02-11 03:29:20.713024166 +0000 +@@ -223,7 +223,9 @@ + /***************************************************************************** + * GE00 + ****************************************************************************/ +-struct mv643xx_eth_shared_platform_data orion_ge00_shared_data; ++struct mv643xx_eth_shared_platform_data orion_ge00_shared_data = { ++ .tx_csum_limit = 1600, ++}; + + static struct resource orion_ge00_shared_resources[] = { + { diff --git a/core/linux/linux.install b/core/linux/linux.install index a65a9c876..255327d83 100644 --- a/core/linux/linux.install +++ b/core/linux/linux.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME= -KERNEL_VERSION=3.1.10-2-ARCH +KERNEL_VERSION=3.1.10-3-ARCH post_install () { # updating module dependencies From d0946326073675aa2655ab2f456e71fe8ea18e17 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 11 Feb 2012 16:44:10 -0500 Subject: [PATCH 10/27] extra/texlive-bin: fixes for building --- extra/texlive-bin/PKGBUILD | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extra/texlive-bin/PKGBUILD b/extra/texlive-bin/PKGBUILD index a741aebb9..1d4a2ae41 100644 --- a/extra/texlive-bin/PKGBUILD +++ b/extra/texlive-bin/PKGBUILD @@ -5,6 +5,7 @@ # ALARM: Kevin Mihelich # - Removed clisp makedepend, removed xindy from build and packaging (only thing that used clisp) # - Use -fPIC with armv7 +# - --disable-cxx-runtime-hack in configure plugrel=1 @@ -53,7 +54,7 @@ md5sums=('220a4f4cc0d915bf8fcbcb553dcee1ae' 'e7f0197559ef865d8c01683dab3b8526') build() { - if [ "${CARCH}" = "x86_64" ]; then + if [ "${CARCH}" = "armv7h" ]; then export CFLAGS="${CFLAGS} -fPIC" export CXXFLAGS="${CXXFLAGS} -fPIC" fi @@ -69,7 +70,7 @@ build() { ../source/configure --prefix=/usr -C \ --disable-native-texlive-build \ --with-banner-add="/Arch Linux" \ - --enable-cxx-runtime-hack \ + --disable-cxx-runtime-hack \ --disable-all-pkgs \ --disable-dump-share \ --disable-ptex \ From 08fcd7719780746e6288a844b1f622c60c8c2557 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 11 Feb 2012 16:48:59 -0500 Subject: [PATCH 11/27] aur/open-iscsi to 2.0.872-2 --- aur/open-iscsi/PKGBUILD | 41 +++++++++------------ aur/open-iscsi/open-iscsi-build-error.patch | 11 ------ 2 files changed, 17 insertions(+), 35 deletions(-) delete mode 100644 aur/open-iscsi/open-iscsi-build-error.patch diff --git a/aur/open-iscsi/PKGBUILD b/aur/open-iscsi/PKGBUILD index f19021eb0..d8001aa2d 100644 --- a/aur/open-iscsi/PKGBUILD +++ b/aur/open-iscsi/PKGBUILD @@ -1,14 +1,11 @@ -# Contributor: Stefan Kirrmann -# Modified: Marco Lima - -# No Plugbox changes, straight from AUR +# Maintainer: Stefan Kirrmann plugrel=1 pkgname=open-iscsi -pkgver=2.0.871.3 -_pkgver=2.0-871.3 -pkgrel=1 +pkgver=2.0.872 +_pkgver=2.0-872 +pkgrel=2 pkgdesc="userland tools" arch=('i686' 'x86_64') url="http://www.open-iscsi.org" @@ -16,32 +13,28 @@ license=('GPL') depends=('bash') install="${pkgname}.install" backup=('etc/iscsi/iscsid.conf' 'etc/iscsi/initiatorname.iscsi' 'etc/conf.d/open-iscsi') -source=("http://kernel.org/pub/linux/kernel/people/mnc/open-iscsi/releases/${pkgname}-${_pkgver}.tar.gz" \ - "open-iscsi" "open-iscsi.conf.d" "open-iscsi-build-error.patch") -#source=("http://www.open-iscsi.org/bits/${pkgname}-${_pkgver}.tar.gz" \ +source=("http://www.open-iscsi.org/bits/${pkgname}-${_pkgver}.tar.gz" \ + "open-iscsi" "open-iscsi.conf.d") options=('docs') -md5sums=('16474cb7cd5a41aea1b7b0b631ac996d' - 'b191af2549f7aff89321b54421eab96f' - 'd6e94c159ddfdeb1ebe69c0760ed1fa6' - 'cafea1118930cd7d9eb6209706020b6a') +sha256sums=('37753697a170223ac02a292b3a23a315a3c747b490c42480e4057b676c9f8d4f' + '817791c59d1c271ad5eb78a7609e4fa081cf9414f3d7ac26df897b9327286c23' + '289ba27b72a3bd9d251e08b3d61dd3ae2f6ad545e5ffe2edaa2b79638996654c') build() { - cd ${startdir}/src/${pkgname}-${_pkgver} + cd ${srcdir}/${pkgname}-${_pkgver} - patch -Np1 -i ${srcdir}/open-iscsi-build-error.patch - # include iscsistart program in the package sed -i -e '/^PROGRAMS = /s/$/ usr\/iscsistart/' Makefile - + + # build breaks if the openslp package is installed + sed -i -e 's/\(\.\/configure\)/ \1 --without-slp/g' Makefile + make user make DESTDIR=${pkgdir} install_user - install -D -m755 ${startdir}/src/open-iscsi ${pkgdir}/etc/rc.d/open-iscsi - install -D -m644 ${startdir}/src/open-iscsi.conf.d ${pkgdir}/etc/conf.d/open-iscsi - - # change permission configuration file - # chmod 600 ${startdir}/pkg/etc/iscsi/iscsid.conf - install -D -m644 ${startdir}/src/${pkgname}-${_pkgver}/etc/iscsid.conf ${pkgdir}/etc/iscsi + install -D -m755 ${srcdir}/open-iscsi ${pkgdir}/etc/rc.d/open-iscsi + install -D -m644 ${srcdir}/open-iscsi.conf.d ${pkgdir}/etc/conf.d/open-iscsi + install -D -m644 ${srcdir}/${pkgname}-${_pkgver}/etc/iscsid.conf ${pkgdir}/etc/iscsi # copy docs mkdir -p ${pkgdir}/usr/share/doc/${pkgname} diff --git a/aur/open-iscsi/open-iscsi-build-error.patch b/aur/open-iscsi/open-iscsi-build-error.patch deleted file mode 100644 index 92664145c..000000000 --- a/aur/open-iscsi/open-iscsi-build-error.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/usr/iscsi_sysfs.c -+++ b/usr/iscsi_sysfs.c -@@ -22,6 +22,8 @@ - #include - #include - #include -+#include -+#include - - #include "log.h" - #include "initiator.h" From cebf9ba7509314ce22f6d2379060c25b028780e3 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 11 Feb 2012 16:52:08 -0500 Subject: [PATCH 12/27] aur/netatalk to 2.2.2-0 --- aur/netatalk/PKGBUILD | 64 ++++++++++++++++++++----------------------- aur/netatalk/cnid | 4 +-- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/aur/netatalk/PKGBUILD b/aur/netatalk/PKGBUILD index aad84fe88..7822f21b7 100644 --- a/aur/netatalk/PKGBUILD +++ b/aur/netatalk/PKGBUILD @@ -1,55 +1,51 @@ -# Maintainer: Dominik Dingel +# Maintainer: Andrea Crotti # Contributor: William Udovich # Contributor: Farhan Yousaf plugrel=1 pkgname=netatalk -pkgver=2.2.1 -pkgrel=1 +pkgver=2.2.2 +pkgrel=0 pkgdesc="A kernel level implementation of the AppleTalk Protocol Suite" arch=('i686' 'x86_64') url="http://netatalk.sourceforge.net" options=('!libtool') license=("GPL") -backup=('etc/netatalk/afpd.conf' - 'etc/netatalk/netatalk.conf' - 'etc/netatalk/atalkd.conf' - 'etc/netatalk/papd.conf' - 'etc/netatalk/AppleVolumes.default' - 'etc/netatalk/AppleVolumes.system' - 'etc/avahi/services/afpd.service') -depends=('libcups' 'tcp_wrappers' 'avahi' 'openssl' 'pam' 'coreutils>=7.1-2' 'db') +backup=('etc/netatalk/afpd.conf' + 'etc/netatalk/netatalk.conf' + 'etc/netatalk/atalkd.conf' + 'etc/netatalk/papd.conf' + 'etc/netatalk/AppleVolumes.default' + 'etc/netatalk/AppleVolumes.system') + +depends=('libcups' 'pam' 'coreutils>=7.1-2' 'db') +optdepends=('avahi' 'tcp_wrappers' 'openssl' 'libgcrypt') makedepends=('make' 'patch' 'gcc') -source=(http://voxel.dl.sourceforge.net/project/netatalk/netatalk/2.2.1/netatalk-$pkgver.tar.bz2 \ +source=(http://voxel.dl.sourceforge.net/project/netatalk/netatalk/$pkgver/netatalk-$pkgver.tar.bz2 \ afpd atalkd papd cnid afpd.service) install=netatalk.install -md5sums=('4a371025daf96adb73fa491efdbfef28' + +md5sums=('bd42b686ec7209d9ab47bd8e2e2431c4' '16ab9fa50ec4abde6de478fc7de57805' '2d05de4a16faf7d4af21b5f14e33fa82' 'b16a687c96dd1ca7ffefd7c995356c0d' - '84d1961726aaa8df08d63a0925358b1a' + 'e21ef8051269583764e68d00683691bb' '9b6b2fee54fe052bba0c69f00d335bdb') build() { - cd "${srcdir}/netatalk-${pkgver}" - ./configure --prefix=/usr --with-cnid-cdb-backend --with-ssl-dir=/usr --localstatedir=/var --enable-fhs --enable-zeroconf=/usr --disable-srvloc --without-xfs - make || return 1 -} - -package() { - cd "${srcdir}/netatalk-${pkgver}" - make DESTDIR=${pkgdir} install - - mv ${pkgdir}/usr/include/netatalk{,2} - - install -d ${pkgdir}/etc/rc.d - install -m755 ../{afpd,atalkd,papd,cnid} ${pkgdir}/etc/rc.d - - install -d ${pkgdir}/etc/avahi/services - install -m755 ../afpd.service ${pkgdir}/etc/avahi/services - - -# rm $startdir/pkg/usr/bin/timeout - rm -f ${pkgdir}/usr/share/man/man1/timeout.1{,.gz} + cd $startdir/src/netatalk-$pkgver + ./configure --prefix=/usr --with-ssl-dir=/usr --localstatedir=/var --enable-fhs --enable-zeroconf=/usr --disable-srvloc --with-cnid-cdb-backend --enable-ddp + make || return 1 + make DESTDIR=$startdir/pkg install + + mv $startdir/pkg/usr/include/netatalk{,2} + + install -d $startdir/pkg/etc/rc.d + install -m755 ../{afpd,atalkd,papd,cnid} $startdir/pkg/etc/rc.d + + install -d $startdir/pkg/etc/avahi/services + install -m744 ../afpd.service $startdir/pkg/etc/avahi/services + + rm -f $startdir/pkg/usr/share/man/man1/timeout.1{,.gz} } diff --git a/aur/netatalk/cnid b/aur/netatalk/cnid index 9aef04931..c363bc4d4 100644 --- a/aur/netatalk/cnid +++ b/aur/netatalk/cnid @@ -7,7 +7,7 @@ PID=$(pidof -o %PPID /usr/sbin/cnid_metad) case "$1" in start) stat_busy "Starting cnid Daemon" - [ -z $PID ] && /usr/sbin/cnid_metad + [ -z "$PID" ] && /usr/sbin/cnid_metad if [ $? -gt 0 ]; then stat_fail else @@ -19,7 +19,7 @@ case "$1" in ;; stop) stat_busy "Stopping cnid Daemon" - [ ! -z $PID ] && kill "$PID" &> /dev/null + [ ! -z "$PID" ] && kill "$PID" &> /dev/null if [ $? -gt 0 ]; then stat_fail else From d385332055fd8a93479d002d1b4c8a803b50d3fb Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sun, 12 Feb 2012 12:20:11 -0500 Subject: [PATCH 13/27] core/linux-tegra to 3.2.5-1 --- core/linux-tegra/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/linux-tegra/PKGBUILD b/core/linux-tegra/PKGBUILD index b34fac11c..26aaef922 100644 --- a/core/linux-tegra/PKGBUILD +++ b/core/linux-tegra/PKGBUILD @@ -12,7 +12,7 @@ pkgname=('linux-tegra' 'linux-headers-tegra') # pkgname=linux-custom # Build kernel with a different name _kernelname=${pkgname#linux} _basekernel=3.2 -pkgver=${_basekernel}.1 +pkgver=${_basekernel}.5 pkgrel=1 arch=('arm') url="http://www.kernel.org/" @@ -25,7 +25,7 @@ source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.xz" 'config' 'change-default-console-loglevel.patch') md5sums=('364066fa18767ec0ae5f4e4abcf9dc51' - '31fc34340f11118873463a1d59d47b7f' + 'fb4d0b76b4c9a42977d75c4b2f3948d0' '6e7667c6c6348bfeca22eaaa05462d62' '2605f5b881f2248f0e2f7d436a86e62b' '9d3c56a4b999c8bfbd4018089a62f662') From e456da0eff7002307c1bf279efd728ddc760ca67 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sun, 12 Feb 2012 12:24:07 -0500 Subject: [PATCH 14/27] core/linux-omap to 3.2.3-1 --- core/linux-omap/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/linux-omap/PKGBUILD b/core/linux-omap/PKGBUILD index b3f27e7af..3a639657b 100644 --- a/core/linux-omap/PKGBUILD +++ b/core/linux-omap/PKGBUILD @@ -12,7 +12,7 @@ pkgname=('linux-omap' 'linux-headers-omap') # pkgname=linux-custom # Build kernel with a different name _kernelname=${pkgname#linux} _basekernel=3.2 -pkgver=${_basekernel}.1 +pkgver=${_basekernel}.3 pkgrel=1 arch=('arm') url="http://www.kernel.org/" @@ -21,13 +21,13 @@ makedepends=('xmlto' 'docbook-xsl' 'uboot-mkimage') options=('!strip') source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.xz" "ftp://ftp.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.bz2" - "rcn-ee.diff.gz::http://rcn-ee.net/deb/sid-armhf/v3.2.1-x3/patch-3.2.1-x3.diff.gz" + "rcn-ee.diff.gz::http://rcn-ee.net/deb/sid-armhf/v3.2.3-x4/patch-3.2.3-x4.diff.gz" 'config' 'change-default-console-loglevel.patch' '0006-omap4-usb-improvement.patch') md5sums=('364066fa18767ec0ae5f4e4abcf9dc51' - '31fc34340f11118873463a1d59d47b7f' - 'd041033ebd9a1d170c2477f0e1dd5c37' + '266bc525f5214db3ec62e6301e6297a6' + '27f49ad6786eb233e6595de9fc0aea51' '041a4754d802a7e41e784dd44413389e' '9d3c56a4b999c8bfbd4018089a62f662' 'd4c22c6f6c8c53d595552b6285aeab79') From 6044d4a0046f7e4d2ce24bf6064b253df4d4951c Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sun, 12 Feb 2012 12:44:45 -0500 Subject: [PATCH 15/27] extra/libjpeg-turbo to 1.2.0-1 --- extra/libjpeg-turbo/PKGBUILD | 62 +++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/extra/libjpeg-turbo/PKGBUILD b/extra/libjpeg-turbo/PKGBUILD index eeca4c963..6c4b941de 100644 --- a/extra/libjpeg-turbo/PKGBUILD +++ b/extra/libjpeg-turbo/PKGBUILD @@ -1,21 +1,61 @@ -# Maintainer: Kevin Mihelich +# $Id: PKGBUILD 149986 2012-02-12 02:54:27Z allan $ +# Maintainer: Allan McRae +# Contributor: Simone Sclavi 'Ito' + +# ALARM: Kevin Mihelich +# - removed makedepends on nasm +# - added --without-simd to configure, no NEON in main repositories yet plugrel=1 pkgname=libjpeg-turbo -pkgver=1.1.1 -pkgrel=4 -pkgdesc="ARM dummy package for the x86 assembly version" -arch=('arm' 'armv7h') -url="http://www.archlinuxarm.org" -depends=('libjpeg') -license=('BYOB') +pkgver=1.2.0 +pkgrel=1 +pkgdesc="libjpeg derivative with accelerated baseline JPEG compression and decompression" +arch=('i686' 'x86_64') +url="http://libjpeg-turbo.virtualgl.org/" +license=('GPL' 'custom') +depends=('glibc') +#makedepends=('nasm') +provides=('libjpeg=8.0.2') +conflicts=('libjpeg') +replaces=('libjpeg') +options=('!libtool') +source=(http://sourceforge.net/projects/$pkgname/files/$pkgver/$pkgname-$pkgver.tar.gz) +md5sums=('5329fa80953938cb4f097afae55059e2') build() { - echo "libjpeg-turbo!" + cd $srcdir/$pkgname-$pkgver + + # put documentation in a reasonable directory... + sed -i "/docdir = /s#/doc#/doc/libjpeg-turbo#" Makefile.in + sed -i "/exampledir = /s#/doc#/doc/libjpeg-turbo#" Makefile.in + + ./configure --prefix=/usr --with-jpeg8 --mandir=/usr/share/man --without-simd + make +} + +check() { + cd $srcdir/$pkgname-$pkgver + + make test } package() { - mkdir -p $pkgdir/usr/share - echo "libjpeg-turbo!" > $pkgdir/usr/share/libjpeg-turbo + cd $srcdir/$pkgname-$pkgver + + make DESTDIR=$pkgdir/ install + + # provide jpegint.h as it is required by various software + install -m644 jpegint.h $pkgdir/usr/include/ + + # do not distributre libturbojpeg as it is unversioned + rm $pkgdir/usr/lib/libturbojpeg.{so,a} + rm $pkgdir/usr/include/turbojpeg.h + + install -dm755 $pkgdir/usr/share/licenses/libjpeg-turbo/ + ln -s ../../doc/libjpeg-turbo/README \ + $pkgdir/usr/share/licenses/libjpeg-turbo/README + ln -s ../../doc/libjpeg-turbo/README-turbo.txt \ + $pkgdir/usr/share/licenses/libjpeg-turbo/README-turbo.txt } From 866bc7baa482dc69752cc449b1e6302366ce3c17 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sun, 12 Feb 2012 15:11:13 -0500 Subject: [PATCH 16/27] removed extra/libjpeg --- extra/libjpeg/PKGBUILD | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 extra/libjpeg/PKGBUILD diff --git a/extra/libjpeg/PKGBUILD b/extra/libjpeg/PKGBUILD deleted file mode 100644 index 25fe32900..000000000 --- a/extra/libjpeg/PKGBUILD +++ /dev/null @@ -1,39 +0,0 @@ -# Maintainer: Allan McRae -# Contributor: Judd Vinet - -# ALARM: Kevin Mihelich -# - Arch replaced this with libjpeg-turbo, which relies on x86 asm - -plugrel=1 -noautobuild=1 - -pkgname=libjpeg -# pkgver follows the library soname to avoid issues with version comparisons -pkgver=8.3.0 -_pkgver=8c -pkgrel=1 -pkgdesc="Library of JPEG support functions" -arch=('i686' 'x86_64') -url="http://www.ijg.org/" -license=('custom') -depends=('glibc') -makedepends=('libtool') -options=('!libtool') -source=(http://www.ijg.org/files/jpegsrc.v${_pkgver}.tar.gz) -md5sums=('a2c10c04f396a9ce72894beb18b4e1f9') - -build() { - cd $srcdir/jpeg-${_pkgver} - ./configure --prefix=/usr --enable-shared --enable-static - make -} - -package() { - cd $srcdir/jpeg-${_pkgver} - make prefix=$pkgdir/usr mandir=$pkgdir/usr/share/man install - - # See FS#11116 - re-assess current need sometime... - install -m644 jpegint.h $pkgdir/usr/include - - install -Dm644 README $pkgdir/usr/share/licenses/libjpeg/README -} From f9b4f83aa19dad33ea5e31f34c2fc50fac896974 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sun, 12 Feb 2012 20:15:13 -0500 Subject: [PATCH 17/27] added aur/mochad 0.1.14-1 --- aur/mochad/PKGBUILD | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 aur/mochad/PKGBUILD diff --git a/aur/mochad/PKGBUILD b/aur/mochad/PKGBUILD new file mode 100644 index 000000000..9e16058c6 --- /dev/null +++ b/aur/mochad/PKGBUILD @@ -0,0 +1,31 @@ +# ALARM: Kevin Mihelich + +plugrel=1 + +pkgname=mochad +pkgver=0.1.14 +pkgrel=1 +pkgdesc="A Linux TCP gateway daemon for the X10 CM15A RF and PL controller and the CM19A RF controller" +arch=('arm' 'armv7h') +license=('GPL') +url="http://mochad.sourceforge.net/" +depends=('libusb') +source=(http://downloads.sf.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('e2e64c00f4809f16c9a2e0c882e77eb5') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + ./configure --prefix=/usr --disable-dependency-tracking + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + + make DESTDIR="${pkgdir}" install-binPROGRAMS + make DESTDIR="${pkgdir}" install-data-am + install -D udev/91-usb-x10-controllers.rules "${pkgdir}/etc/udev/rules.d/91-usb-x10-controllers.rules" + install -D hotplug2/20-usb-x10 "${pkgdir}/etc/hotplug.d/usb/20-usb-x10" + install -D hotplug2/mochad "${pkgdir}/etc/rc.d/mochad" +} From 7056ec4f350b0c9a2a58f25393f2c1329c468f5d Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Mon, 13 Feb 2012 10:28:35 -0500 Subject: [PATCH 18/27] udev-oxnas to 181-2 --- core/udev-oxnas/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/udev-oxnas/PKGBUILD b/core/udev-oxnas/PKGBUILD index 06ae9dd32..aedc6ab7e 100644 --- a/core/udev-oxnas/PKGBUILD +++ b/core/udev-oxnas/PKGBUILD @@ -12,10 +12,10 @@ plugrel=1 _pkgbase='udev' pkgname='udev-oxnas' -pkgver=180 +pkgver=181 _pkgver=175 -provides=('udev=180') -pkgrel=1 +provides=('udev=181') +pkgrel=2 arch=(i686 x86_64) url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html" license=('GPL') From 355caa95b589dd0b59063224795cf5e66a57ce09 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Mon, 13 Feb 2012 10:41:06 -0500 Subject: [PATCH 19/27] removed core/kmod - new version fixes v5 problems --- ...ially-fix-parsing-of-alias-with-dots.patch | 34 --- ...-used-shared-code-in-module-creation.patch | 196 ------------------ ...e-all-error-returns-from-init_module.patch | 34 --- .../0004-modprobe-remove-0-refcnt-deps.patch | 52 ----- core/kmod/PKGBUILD | 77 ------- core/kmod/depmod-search.conf | 5 - core/kmod/v5-alignment-fix.patch | 58 ------ 7 files changed, 456 deletions(-) delete mode 100644 core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch delete mode 100644 core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch delete mode 100644 core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch delete mode 100644 core/kmod/0004-modprobe-remove-0-refcnt-deps.patch delete mode 100644 core/kmod/PKGBUILD delete mode 100644 core/kmod/depmod-search.conf delete mode 100644 core/kmod/v5-alignment-fix.patch diff --git a/core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch b/core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch deleted file mode 100644 index b69d095d3..000000000 --- a/core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch +++ /dev/null @@ -1,34 +0,0 @@ -From cdaf4b2f3ef60365c6b8006a63410368a7b38f39 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Tue, 31 Jan 2012 00:12:32 -0500 -Subject: [PATCH 1/4] partially fix parsing of alias with dots - ---- - libkmod/libkmod-util.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c -index 7c2611b..6a9f697 100644 ---- a/libkmod/libkmod-util.c -+++ b/libkmod/libkmod-util.c -@@ -134,8 +134,7 @@ inline int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) - case ']': - return -EINVAL; - case '[': -- while (alias[s] != ']' && -- alias[s] != '.' && alias[s] != '\0') -+ while (alias[s] != ']' && alias[s] != '\0') - s++; - - if (alias[s] != ']') -@@ -144,7 +143,6 @@ inline int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) - s++; - break; - case '\0': -- case '.': - goto finish; - default: - buf[s] = c; --- -1.7.9 - diff --git a/core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch b/core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch deleted file mode 100644 index 76cc35049..000000000 --- a/core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 1d2f64689b2456ade81d6d489c4f5bfb5fdb92fd Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Tue, 31 Jan 2012 00:13:43 -0500 -Subject: [PATCH 2/4] libkmod-module: used shared code in module creation - ---- - libkmod/libkmod-module.c | 135 ++++++++++++++++++++++++++------------------- - 1 files changed, 78 insertions(+), 57 deletions(-) - -diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c -index 47b1709..48e4aa1 100644 ---- a/libkmod/libkmod-module.c -+++ b/libkmod/libkmod-module.c -@@ -162,6 +162,76 @@ fail: - return err; - } - -+/* -+ * Memory layout with alias: -+ * -+ * struct kmod_module { -+ * hashkey -----. -+ * alias -----. | -+ * name ----. | | -+ * } | | | -+ * name <----------' | | -+ * alias <-----------' | -+ * name\alias <--------' -+ * -+ * Memory layout without alias: -+ * -+ * struct kmod_module { -+ * hashkey ---. -+ * alias -----|----> NULL -+ * name ----. | -+ * } | | -+ * name <----------'-' -+ * -+ * @key is "name\alias" or "name" (in which case alias == NULL) -+ */ -+static int kmod_module_new(struct kmod_ctx *ctx, const char *key, -+ const char *name, size_t namelen, -+ const char *alias, size_t aliaslen, -+ struct kmod_module **mod) -+{ -+ struct kmod_module *m; -+ size_t keylen; -+ -+ m = kmod_pool_get_module(ctx, key); -+ if (m != NULL) { -+ *mod = kmod_module_ref(m); -+ return 0; -+ } -+ -+ if (alias == NULL) -+ keylen = namelen; -+ else -+ keylen = namelen + aliaslen + 1; -+ -+ m = malloc(sizeof(*m) + (alias == NULL ? 1 : 2) * (keylen + 1)); -+ if (m == NULL) { -+ free(m); -+ return -ENOMEM; -+ } -+ -+ memset(m, 0, sizeof(*m)); -+ -+ m->ctx = kmod_ref(ctx); -+ m->name = (char *)m + sizeof(*m); -+ memcpy(m->name, key, keylen + 1); -+ if (alias == NULL) { -+ m->hashkey = m->name; -+ m->alias = NULL; -+ } else { -+ m->name[namelen] = '\0'; -+ m->alias = m->name + namelen + 1; -+ m->hashkey = m->name + keylen + 1; -+ memcpy(m->hashkey, key, keylen + 1); -+ } -+ -+ m->refcount = 1; -+ kmod_pool_add_module(ctx, m, m->hashkey); -+ *mod = m; -+ -+ return 0; -+} -+ - /** - * kmod_module_new_from_name: - * @ctx: kmod library context -@@ -188,54 +258,15 @@ KMOD_EXPORT int kmod_module_new_from_name(struct kmod_ctx *ctx, - const char *name, - struct kmod_module **mod) - { -- struct kmod_module *m; - size_t namelen; - char name_norm[PATH_MAX]; -- char *namesep; - - if (ctx == NULL || name == NULL || mod == NULL) - return -ENOENT; - -- if (alias_normalize(name, name_norm, &namelen) < 0) { -- DBG(ctx, "invalid alias: %s\n", name); -- return -EINVAL; -- } -+ modname_normalize(name, name_norm, &namelen); - -- m = kmod_pool_get_module(ctx, name_norm); -- if (m != NULL) { -- *mod = kmod_module_ref(m); -- return 0; -- } -- -- namesep = strchr(name_norm, '/'); -- m = malloc(sizeof(*m) + (namesep == NULL ? 1 : 2) * namelen + 2); -- if (m == NULL) { -- free(m); -- return -ENOMEM; -- } -- -- memset(m, 0, sizeof(*m)); -- -- m->ctx = kmod_ref(ctx); -- m->name = (char *)m + sizeof(*m); -- memcpy(m->name, name_norm, namelen + 1); -- -- if (namesep) { -- size_t len = namesep - name_norm; -- -- m->name[len] = '\0'; -- m->alias = m->name + len + 1; -- m->hashkey = m->name + namelen + 1; -- memcpy(m->hashkey, name_norm, namelen + 1); -- } else { -- m->hashkey = m->name; -- } -- -- m->refcount = 1; -- kmod_pool_add_module(ctx, m, m->hashkey); -- *mod = m; -- -- return 0; -+ return kmod_module_new(ctx, name_norm, name_norm, namelen, NULL, 0, mod); - } - - int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias, -@@ -251,9 +282,9 @@ int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias, - - memcpy(key, name, namelen); - memcpy(key + namelen + 1, alias, aliaslen + 1); -- key[namelen] = '/'; -+ key[namelen] = '\\'; - -- err = kmod_module_new_from_name(ctx, key, mod); -+ err = kmod_module_new(ctx, key, name, namelen, alias, aliaslen, mod); - if (err < 0) - return err; - -@@ -323,7 +354,7 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx, - free(abspath); - else { - ERR(ctx, "kmod_module '%s' already exists with different path: new-path='%s' old-path='%s'\n", -- name, abspath, m->path); -+ name, abspath, m->path); - free(abspath); - return -EEXIST; - } -@@ -332,21 +363,11 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx, - return 0; - } - -- m = malloc(sizeof(*m) + namelen + 1); -- if (m == NULL) -- return -errno; -- -- memset(m, 0, sizeof(*m)); -+ err = kmod_module_new(ctx, name, name, namelen, NULL, 0, &m); -+ if (err < 0) -+ return err; - -- m->ctx = kmod_ref(ctx); -- m->name = (char *)m + sizeof(*m); -- memcpy(m->name, name, namelen + 1); - m->path = abspath; -- m->hashkey = m->name; -- m->refcount = 1; -- -- kmod_pool_add_module(ctx, m, m->hashkey); -- - *mod = m; - - return 0; --- -1.7.9 - diff --git a/core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch b/core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch deleted file mode 100644 index 5bbc93a90..000000000 --- a/core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch +++ /dev/null @@ -1,34 +0,0 @@ -From fdf78d80d298353c29e1fe8c00602669dd9662bb Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Mon, 30 Jan 2012 23:05:26 -0500 -Subject: [PATCH 3/4] modprobe: handle all error returns from init_module - ---- - tools/kmod-modprobe.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c -index 3e51506..c882856 100644 ---- a/tools/kmod-modprobe.c -+++ b/tools/kmod-modprobe.c -@@ -551,6 +551,8 @@ static int insmod_do_insert_module(struct kmod_module *mod, const char *opts) - - err = kmod_module_insert_module(mod, flags, opts); - switch (err) { -+ case 0: -+ break; - case -EEXIST: - /* - * We checked for EEXIST with an earlier call to -@@ -564,7 +566,7 @@ static int insmod_do_insert_module(struct kmod_module *mod, const char *opts) - ERR("Module %s already in kernel.\n", - kmod_module_get_name(mod)); - break; -- case -EPERM: -+ default: - ERR("could not insert '%s': %s\n", kmod_module_get_name(mod), - strerror(-err)); - break; --- -1.7.9 - diff --git a/core/kmod/0004-modprobe-remove-0-refcnt-deps.patch b/core/kmod/0004-modprobe-remove-0-refcnt-deps.patch deleted file mode 100644 index 80cc73130..000000000 --- a/core/kmod/0004-modprobe-remove-0-refcnt-deps.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 4e3dd21aff55b5bbaa08b037fc2a5625bfffc0a5 Mon Sep 17 00:00:00 2001 -From: Dave Reisner -Date: Mon, 30 Jan 2012 23:39:30 -0500 -Subject: [PATCH 4/4] modprobe: remove 0 refcnt deps - ---- - tools/kmod-modprobe.c | 15 +++++++++++++-- - 1 files changed, 13 insertions(+), 2 deletions(-) - -diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c -index c882856..bd991a5 100644 ---- a/tools/kmod-modprobe.c -+++ b/tools/kmod-modprobe.c -@@ -381,7 +381,7 @@ static int rmmod_do_deps_list(struct kmod_list *list, bool stop_on_errors) - static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies) - { - const char *modname = kmod_module_get_name(mod); -- struct kmod_list *pre = NULL, *post = NULL; -+ struct kmod_list *pre = NULL, *post = NULL, *deps, *itr; - const char *cmd = NULL; - int err; - -@@ -422,7 +422,7 @@ static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies) - rmmod_do_deps_list(post, false); - - if (do_dependencies && remove_dependencies) { -- struct kmod_list *deps = kmod_module_get_dependencies(mod); -+ deps = kmod_module_get_dependencies(mod); - - err = rmmod_do_deps_list(deps, true); - if (err < 0) -@@ -451,6 +451,17 @@ static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies) - - rmmod_do_deps_list(pre, false); - -+ deps = kmod_module_get_dependencies(mod); -+ if (deps != NULL) { -+ kmod_list_foreach_reverse(itr, deps) { -+ struct kmod_module *dep = kmod_module_get_module(itr); -+ if (kmod_module_get_refcnt(dep) == 0) -+ rmmod_do_remove_module(dep); -+ kmod_module_unref(dep); -+ } -+ kmod_module_unref_list(deps); -+ } -+ - error: - kmod_module_unref_list(pre); - kmod_module_unref_list(post); --- -1.7.9 - diff --git a/core/kmod/PKGBUILD b/core/kmod/PKGBUILD deleted file mode 100644 index a0c45dbc3..000000000 --- a/core/kmod/PKGBUILD +++ /dev/null @@ -1,77 +0,0 @@ -# $Id: PKGBUILD 148462 2012-02-01 13:16:32Z dreisner $ -# Maintainer: Dave Reisner - -# ALARM: Kevin Mihelich -# - fix for v5, credit: ambrop7 (issue #127) - -plugrel=1 - -pkgname=kmod -pkgver=4 -pkgrel=2.1 -pkgdesc="Linux kernel module handling" -arch=('i686' 'x86_64') -url="http://git.profusion.mobi/cgit.cgi/kmod.git" -license=('GPL2') -depends=('glibc' 'zlib') -makedepends=('docbook2x') -options=('!libtool') -provides=('module-init-tools=3.16') -conflicts=('module-init-tools') -replaces=('module-init-tools') -source=("http://packages.profusion.mobi/$pkgname/$pkgname-$pkgver.tar.xz" - 0001-partially-fix-parsing-of-alias-with-dots.patch - 0002-libkmod-module-used-shared-code-in-module-creation.patch - 0003-modprobe-handle-all-error-returns-from-init_module.patch - 0004-modprobe-remove-0-refcnt-deps.patch - v5-alignment-fix.patch - "depmod-search.conf") -md5sums=('e14450a066a48accd0af1995b3c0232d' - '5f497ab3466ee1a616b6e6c97b330706' - '23a9257a152862753ce4c4ee7287761a' - '3a57671b0f37b1203b207f35a4442ae3' - '1fe88eee9302104b179124ce6bfc55d2' - '99d003b8337d9372b043b0d449a6b59a' - '4b8cbcbc54b9029c99fd730e257d4436') - -build() { - cd "$pkgname-$pkgver" - - patch -Np1 <"$srcdir/0001-partially-fix-parsing-of-alias-with-dots.patch" - patch -Np1 <"$srcdir/0002-libkmod-module-used-shared-code-in-module-creation.patch" - patch -Np1 <"$srcdir/0003-modprobe-handle-all-error-returns-from-init_module.patch" - patch -Np1 <"$srcdir/0004-modprobe-remove-0-refcnt-deps.patch" - [[ $CARCH == "arm" ]] && patch -p1 -i "${srcdir}/v5-alignment-fix.patch" - - ./configure \ - --sysconfdir=/etc \ - --with-rootprefix= \ - --with-zlib - - make -} - -check() { - make -C "$pkgname-$pkgver" check -} - -package() { - make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install - - # binary directories - install -dm755 "$pkgdir"/{,s}bin - - # configuration directories - install -dm755 "$pkgdir"/{etc,lib}/{depmod,modprobe}.d - - # add symlinks to kmod - ln -s /usr/bin/kmod "$pkgdir/bin/lsmod" - for tool in {ins,rm,dep}mod mod{info,probe}; do - ln -s ../usr/bin/kmod "$pkgdir/sbin/$tool" - done - - # install depmod.d file for search/ dir - install -Dm644 "$srcdir/depmod-search.conf" "$pkgdir/lib/depmod.d/search.conf" -} - -# vim: ft=sh syn=sh et diff --git a/core/kmod/depmod-search.conf b/core/kmod/depmod-search.conf deleted file mode 100644 index 3feb67b05..000000000 --- a/core/kmod/depmod-search.conf +++ /dev/null @@ -1,5 +0,0 @@ -# -# /etc/depmod.d/depmod.conf -# - -search updates extramodules built-in diff --git a/core/kmod/v5-alignment-fix.patch b/core/kmod/v5-alignment-fix.patch deleted file mode 100644 index 85c72dd39..000000000 --- a/core/kmod/v5-alignment-fix.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/libkmod/libkmod-hash.c b/libkmod/libkmod-hash.c -index f58e9db..8f647b4 100644 ---- a/libkmod/libkmod-hash.c -+++ b/libkmod/libkmod-hash.c -@@ -83,6 +83,10 @@ void hash_free(struct hash *hash) - free(hash); - } - -+struct unaligned_short { -+ unsigned short v; -+} __attribute__((packed)); -+ - static inline unsigned int hash_superfast(const char *key, unsigned int len) - { - /* Paul Hsieh (http://www.azillionmonkeys.com/qed/hash.html) -@@ -90,14 +94,14 @@ static inline unsigned int hash_superfast(const char *key, unsigned int len) - * EFL's eina and possible others. - */ - unsigned int tmp, hash = len, rem = len & 3; -- const unsigned short *itr = (const unsigned short *)key; -+ const struct unaligned_short *itr = (const unsigned short *)key; - - len /= 4; - - /* Main loop */ - for (; len > 0; len--) { -- hash += itr[0]; -- tmp = (itr[1] << 11) ^ hash; -+ hash += itr[0].v; -+ tmp = (itr[1].v << 11) ^ hash; - hash = (hash << 16) ^ tmp; - itr += 2; - hash += hash >> 11; -@@ -106,14 +110,14 @@ static inline unsigned int hash_superfast(const char *key, unsigned int len) - /* Handle end cases */ - switch (rem) { - case 3: -- hash += *itr; -+ hash += itr->v; - hash ^= hash << 16; - hash ^= key[2] << 18; - hash += hash >> 11; - break; - - case 2: -- hash += *itr; -+ hash += itr->v; - hash ^= hash << 11; - hash += hash >> 17; - break; -@@ -243,6 +247,7 @@ void *hash_find(const struct hash *hash, const char *key) - if (entry == NULL) - return NULL; - return (void *)entry->value; -+ - } - - int hash_del(struct hash *hash, const char *key) From 2dbd673ab41b463e6d9da8bc73bc14d2e3018fd3 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Tue, 14 Feb 2012 09:35:38 -0500 Subject: [PATCH 20/27] core/pacman to 4.0.2-1 --- core/pacman/PKGBUILD | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/core/pacman/PKGBUILD b/core/pacman/PKGBUILD index 4ded5b356..4b45887e8 100644 --- a/core/pacman/PKGBUILD +++ b/core/pacman/PKGBUILD @@ -12,8 +12,8 @@ plugrel=1 noautobuild=1 pkgname=pacman -pkgver=4.0.1 -pkgrel=4 +pkgver=4.0.2 +pkgrel=1 pkgdesc="A library-based package manager with dependency support" arch=('i686' 'x86_64') url="http://www.archlinux.org/pacman/" @@ -26,13 +26,13 @@ optdepends=('fakeroot: for makepkg usage as normal user') backup=(etc/pacman.conf etc/makepkg.conf) install=pacman.install options=(!libtool) -source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz +source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig} pacman.conf makepkg.conf) -md5sums=('76bd88eff8cd94bc9899faa091822dc1' - '4605b3490d4fd1e5c6e20db17da9ded6' - 'a0edf98ad1845a4c7d902a86638d5d2d' - 'db051afbd12993b7743ccd4d58668499') +md5sums=('289ba4a19a16393096e065cec1cb9b0a' + '575140dce3ea597d91b6d081aa3f6a00' + '9c58ab16092e34eb359ea7e8d56bfc3a' + 'e6d44e71b847d2c98bb38087e33cd76b') # keep an upgrade path for older installations PKGEXT='.pkg.tar.gz' @@ -45,6 +45,10 @@ build() { make } +check() { + make -C "$pkgname-$pkgver" check +} + package() { cd $srcdir/$pkgname-$pkgver make DESTDIR=$pkgdir install @@ -91,6 +95,3 @@ package() { mkdir -p $pkgdir/usr/share/zsh/site-functions/ install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman } -md5sums=('76bd88eff8cd94bc9899faa091822dc1' - '9c58ab16092e34eb359ea7e8d56bfc3a' - 'e6d44e71b847d2c98bb38087e33cd76b') From 10964786263a124dd6ec6e80d4ef959a629d623b Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 15 Feb 2012 10:32:22 -0500 Subject: [PATCH 21/27] extra/pyqt to 4.9.1-1 --- extra/pyqt/PKGBUILD | 26 +++++++++++--------------- extra/pyqt/fix-qthelp-build.patch | 10 +++++----- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/extra/pyqt/PKGBUILD b/extra/pyqt/PKGBUILD index 0b33efc0d..254568955 100644 --- a/extra/pyqt/PKGBUILD +++ b/extra/pyqt/PKGBUILD @@ -11,8 +11,8 @@ plugrel=1 pkgbase=pyqt pkgname=('pyqt' 'python2-pyqt') -pkgver=4.9 -pkgrel=2 +pkgver=4.9.1 +pkgrel=1 arch=('i686' 'x86_64') url="http://riverbankcomputing.co.uk/software/pyqt/intro" license=('GPL') @@ -21,22 +21,22 @@ makedepends=('qt' 'python-sip' 'dbus-python' 'python2-sip' 'phonon' source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz" "fix-qthelp-build.patch" "PyQt4-4.7.3-qreal_float_support.patch") -md5sums=('61619500d09d87b6c2a25bd3ea994504' - '356a453331a33c507b1baba4a9771764' +md5sums=('7f495dc49f71e3bfb64bf942e0d8bb3c' + '6acfe0a5a00779f946c29d5fac647ce1' 'a20d7022e91071f838bd4908851a0f7b') build() { + # Build QtHelp (FS#27665) + cd "${srcdir}"/PyQt-x11-gpl-${pkgver} + patch -p1 -i "${srcdir}"/fix-qthelp-build.patch + + # ALARM: Fix for QReal + patch -p1 -i "${srcdir}"/PyQt4-4.7.3-qreal_float_support.patch + cd "${srcdir}" - - patch -p0 -i "${srcdir}"/fix-qthelp-build.patch - cp -r PyQt-x11-gpl-${pkgver} Py2Qt-x11-gpl-${pkgver} cd "${srcdir}/PyQt-x11-gpl-${pkgver}" - - # ALARM: Fix for QReal - patch -Np1 -i ${srcdir}/PyQt4-4.7.3-qreal_float_support.patch - python configure.py \ --confirm-license \ --qsci-api @@ -48,10 +48,6 @@ build() { ### Python2 version ### cd "${srcdir}/Py2Qt-x11-gpl-${pkgver}" - - # ALARM: Fix for QReal - patch -Np1 -i ${srcdir}/PyQt4-4.7.3-qreal_float_support.patch - python2 configure.py \ --confirm-license \ -v /usr/share/sip \ diff --git a/extra/pyqt/fix-qthelp-build.patch b/extra/pyqt/fix-qthelp-build.patch index cf0cbf171..6055f9f35 100644 --- a/extra/pyqt/fix-qthelp-build.patch +++ b/extra/pyqt/fix-qthelp-build.patch @@ -1,11 +1,11 @@ ---- PyQt-x11-gpl-4.9/configure.py~ 2011-12-23 14:53:07.981490550 +0100 -+++ PyQt-x11-gpl-4.9/configure.py 2011-12-23 14:52:38.384984221 +0100 -@@ -1264,7 +1264,7 @@ +--- PyQt-x11-gpl-4.9.1/configure.py~ 2012-02-13 20:16:11.418786488 +0000 ++++ PyQt-x11-gpl-4.9.1/configure.py 2012-02-13 20:16:50.561809527 +0000 +@@ -1261,7 +1261,7 @@ opengl = (mname == "QtOpenGL") - + qt = [mname] - if mname in ("QtOpenGL", "QtWebKit"): + if mname in ("QtHelp", "QtOpenGL", "QtWebKit"): qt.append("QtCore") - + makefile = sipconfig.ProgramMakefile(sipcfg, console=1, qt=qt, warnings=0, From 2b234055ed985cbbb3212981bb223ef51e82befd Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 15 Feb 2012 10:33:07 -0500 Subject: [PATCH 22/27] extra/kdebindings-python to 4.8.0-1 --- extra/kdebindings-python/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/kdebindings-python/PKGBUILD b/extra/kdebindings-python/PKGBUILD index 0b7939f5f..d211e1430 100644 --- a/extra/kdebindings-python/PKGBUILD +++ b/extra/kdebindings-python/PKGBUILD @@ -8,7 +8,7 @@ plugrel=1 pkgname=kdebindings-python pkgver=4.8.0 -pkgrel=1 +pkgrel=2 pkgdesc="KDE bindings for Python" url="http://kde.org/" arch=('i686' 'x86_64') From 9a84e8c15bbc1bf3efcad1eac78d9ff31c9d2550 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 15 Feb 2012 15:31:09 -0500 Subject: [PATCH 23/27] added extra/imagemagick 6.7.5.3-1 --- extra/imagemagick/PKGBUILD | 88 ++++++++++++++++++++++++ extra/imagemagick/perlmagick.rpath.patch | 10 +++ 2 files changed, 98 insertions(+) create mode 100644 extra/imagemagick/PKGBUILD create mode 100644 extra/imagemagick/perlmagick.rpath.patch diff --git a/extra/imagemagick/PKGBUILD b/extra/imagemagick/PKGBUILD new file mode 100644 index 000000000..a0e7088e7 --- /dev/null +++ b/extra/imagemagick/PKGBUILD @@ -0,0 +1,88 @@ +# $Id: PKGBUILD 149825 2012-02-11 09:11:58Z eric $ +# Maintainer: Eric Bélanger + +# ALARM: Kevin Mihelich +# - use sunet.se mirror +# - set quantum depth to 32 to fix FTBFS + +pkgbase=imagemagick +pkgname=('imagemagick' 'imagemagick-doc') +pkgver=6.7.5.3 +pkgrel=1 +arch=('i686' 'x86_64') +url="http://www.imagemagick.org/" +license=('custom') +depends=('perl' 'libltdl' 'lcms2' 'libxt' 'fontconfig' 'libxext' 'libjpeg-turbo') +makedepends=('ghostscript' 'openexr' 'libwmf' 'librsvg' 'libxml2' 'jasper' 'libpng') +source=(http://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.xz \ + perlmagick.rpath.patch) +sha1sums=('b6cee59cb380f38572ec40769c438901dcc7500e' + '23405f80904b1de94ebd7bd6fe2a332471b8c283') + +build() { + cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.} + + sed '/AC_PATH_XTRA/d' -i configure.ac + autoreconf + patch -p0 -i ../perlmagick.rpath.patch + + LIBS="$LIBS -L/usr/lib/perl5/core_perl/CORE -lperl" \ + ./configure --prefix=/usr --sysconfdir=/etc --with-modules --disable-static \ + --enable-openmp --with-wmf --with-openexr --with-xml --with-lcms2 --with-jp2 \ + --with-gslib --with-gs-font-dir=/usr/share/fonts/Type1 \ + --with-perl --with-perl-options="INSTALLDIRS=vendor" \ + --without-gvc --without-djvu --without-autotrace --without-webp \ + --without-jbig --without-fpx --without-dps --without-fftw --without-lqr --with-quantum-depth=32 + make +} + +check() { + cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.} + make check +} + +package_imagemagick() { + pkgdesc="An image viewing/manipulation program" + optdepends=('ghostscript: for Ghostscript support' + 'openexr: for OpenEXR support' + 'libwmf: for WMF support' + 'librsvg: for SVG support' + 'libxml2: for XML support' + 'jasper: for JPEG-2000 support' + 'libpng: for PNG support') + backup=('etc/ImageMagick/coder.xml' + 'etc/ImageMagick/colors.xml' + 'etc/ImageMagick/delegates.xml' + 'etc/ImageMagick/log.xml' + 'etc/ImageMagick/magic.xml' + 'etc/ImageMagick/mime.xml' + 'etc/ImageMagick/policy.xml' + 'etc/ImageMagick/sRGB.icc' + 'etc/ImageMagick/thresholds.xml' + 'etc/ImageMagick/type.xml' + 'etc/ImageMagick/type-dejavu.xml' + 'etc/ImageMagick/type-ghostscript.xml' + 'etc/ImageMagick/type-windows.xml') + options=('!makeflags' '!docs' 'libtool') + + cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.} + make DESTDIR="${pkgdir}" install + chmod 755 "${pkgdir}/usr/lib/perl5/vendor_perl/auto/Image/Magick/Magick.so" + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/imagemagick/LICENSE" + install -Dm644 NOTICE "${pkgdir}/usr/share/licenses/imagemagick/NOTICE" + +#Cleaning + find "${pkgdir}" -name '*.bs' -delete + rm -f "${pkgdir}"/usr/lib/*.la +} + +package_imagemagick-doc() { + pkgdesc="The ImageMagick documentation (utilities manuals and libraries API)" + depends=() + options=('!makeflags') + + cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.} + make DESTDIR="${pkgdir}" install-data-html + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/imagemagick-doc/LICENSE" + install -Dm644 NOTICE "${pkgdir}/usr/share/licenses/imagemagick-doc/NOTICE" +} diff --git a/extra/imagemagick/perlmagick.rpath.patch b/extra/imagemagick/perlmagick.rpath.patch new file mode 100644 index 000000000..958c0f2ee --- /dev/null +++ b/extra/imagemagick/perlmagick.rpath.patch @@ -0,0 +1,10 @@ +--- Makefile.in.orig 2009-05-26 16:22:11.000000000 -0300 ++++ Makefile.in 2009-05-26 16:23:27.000000000 -0300 +@@ -10067,6 +10067,7 @@ + + @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@$(PERLMAKEFILE): perl-sources $(PERLMAKEMAKER) + @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@ cd $(PERLMAGICK) && @PERL@ Makefile.PL $(PERL_MAKE_OPTIONS) ++@WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@ cd $(PERLMAGICK) && @SED@ -i 's|LD_RUN_PATH|DIE_LD_RUN_PATH_DIE|g' Makefile + + @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@install-exec-perl: $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEFILE) + @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@ cd $(PERLMAGICK) && $(MAKE) CC='@CC@' install From b88b37bb39117f12749a6c262d43c0eeb63fdfc3 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 15 Feb 2012 15:31:40 -0500 Subject: [PATCH 24/27] extra/imagemagick: plugrel --- extra/imagemagick/PKGBUILD | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extra/imagemagick/PKGBUILD b/extra/imagemagick/PKGBUILD index a0e7088e7..fbeb5d9bf 100644 --- a/extra/imagemagick/PKGBUILD +++ b/extra/imagemagick/PKGBUILD @@ -5,6 +5,8 @@ # - use sunet.se mirror # - set quantum depth to 32 to fix FTBFS +plugrel=1 + pkgbase=imagemagick pkgname=('imagemagick' 'imagemagick-doc') pkgver=6.7.5.3 From fd3b331c9afd0c93bed084750fce9eb623f99435 Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Wed, 15 Feb 2012 23:24:01 +0100 Subject: [PATCH 25/27] enable specific ipv6 route config via RA --- core/linux-omap/PKGBUILD | 2 +- core/linux-omap/config | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/linux-omap/PKGBUILD b/core/linux-omap/PKGBUILD index 3a639657b..41a813aaa 100644 --- a/core/linux-omap/PKGBUILD +++ b/core/linux-omap/PKGBUILD @@ -28,7 +28,7 @@ source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.xz" md5sums=('364066fa18767ec0ae5f4e4abcf9dc51' '266bc525f5214db3ec62e6301e6297a6' '27f49ad6786eb233e6595de9fc0aea51' - '041a4754d802a7e41e784dd44413389e' + '1d5235ed4069fdb77bea890791690c2f' '9d3c56a4b999c8bfbd4018089a62f662' 'd4c22c6f6c8c53d595552b6285aeab79') diff --git a/core/linux-omap/config b/core/linux-omap/config index 6cc85b61e..a4d509d65 100644 --- a/core/linux-omap/config +++ b/core/linux-omap/config @@ -637,7 +637,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic" CONFIG_TCP_MD5SIG=y CONFIG_IPV6=y CONFIG_IPV6_PRIVACY=y -# CONFIG_IPV6_ROUTER_PREF is not set +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y # CONFIG_IPV6_OPTIMISTIC_DAD is not set CONFIG_INET6_AH=m CONFIG_INET6_ESP=m From 35f6a56d764f72a9ad0a904fdd1db3ca0bc7da48 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 15 Feb 2012 18:26:15 -0500 Subject: [PATCH 26/27] core/linux-omap to 3.2.6-1 --- core/linux-omap/PKGBUILD | 10 +++++----- core/linux-omap/config | 2 +- core/linux-omap/linux-omap.install | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/linux-omap/PKGBUILD b/core/linux-omap/PKGBUILD index 41a813aaa..330c1cb13 100644 --- a/core/linux-omap/PKGBUILD +++ b/core/linux-omap/PKGBUILD @@ -12,7 +12,7 @@ pkgname=('linux-omap' 'linux-headers-omap') # pkgname=linux-custom # Build kernel with a different name _kernelname=${pkgname#linux} _basekernel=3.2 -pkgver=${_basekernel}.3 +pkgver=${_basekernel}.6 pkgrel=1 arch=('arm') url="http://www.kernel.org/" @@ -21,14 +21,14 @@ makedepends=('xmlto' 'docbook-xsl' 'uboot-mkimage') options=('!strip') source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.xz" "ftp://ftp.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.bz2" - "rcn-ee.diff.gz::http://rcn-ee.net/deb/sid-armhf/v3.2.3-x4/patch-3.2.3-x4.diff.gz" + "rcn-ee.diff.gz::http://rcn-ee.net/deb/sid-armhf/v3.2.6-x4/patch-3.2.6-x4.diff.gz" 'config' 'change-default-console-loglevel.patch' '0006-omap4-usb-improvement.patch') md5sums=('364066fa18767ec0ae5f4e4abcf9dc51' - '266bc525f5214db3ec62e6301e6297a6' - '27f49ad6786eb233e6595de9fc0aea51' - '1d5235ed4069fdb77bea890791690c2f' + '2bd4679899df503177a3b61ae2068749' + '9a38f8bff01e024ea9c82a81bf2b81c3' + '0c09bb6de961a88352025e575804a4f0' '9d3c56a4b999c8bfbd4018089a62f662' 'd4c22c6f6c8c53d595552b6285aeab79') diff --git a/core/linux-omap/config b/core/linux-omap/config index a4d509d65..075d3f265 100644 --- a/core/linux-omap/config +++ b/core/linux-omap/config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 3.2.1 Kernel Configuration +# Linux/arm 3.2.6 Kernel Configuration # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y diff --git a/core/linux-omap/linux-omap.install b/core/linux-omap/linux-omap.install index 3d10f535f..c1d23c8d1 100644 --- a/core/linux-omap/linux-omap.install +++ b/core/linux-omap/linux-omap.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME=-omap -KERNEL_VERSION=3.2.1-1-ARCH +KERNEL_VERSION=3.2.6-1-ARCH post_install () { # updating module dependencies From 0968d3835565cc59e028b18eb69856914abed3a0 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 15 Feb 2012 20:34:17 -0500 Subject: [PATCH 27/27] added core/nfs-utils 1.2.5-1 --- core/nfs-utils/18-dont-use-PAGE_SIZE.patch | 20 ++ core/nfs-utils/PKGBUILD | 83 +++++ core/nfs-utils/exports | 15 + core/nfs-utils/idmapd.conf | 14 + core/nfs-utils/kernel-3.0-segfault.patch | 53 +++ core/nfs-utils/nfs-common | 315 ++++++++++++++++++ core/nfs-utils/nfs-common.conf | 40 +++ core/nfs-utils/nfs-server | 299 +++++++++++++++++ core/nfs-utils/nfs-server.conf | 29 ++ .../nfs-utils-1.1.2-kerberos-ac.patch | 138 ++++++++ core/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch | 39 +++ core/nfs-utils/nfs-utils-1.1.4-no-exec.patch | 15 + .../nfs-utils-1.1.6-heimdal_functions.patch | 69 ++++ .../nfs-utils-1.1.6-no_libgssapi.patch | 57 ++++ core/nfs-utils/nfs-utils.install | 32 ++ core/nfs-utils/start-statd.patch | 22 ++ 16 files changed, 1240 insertions(+) create mode 100644 core/nfs-utils/18-dont-use-PAGE_SIZE.patch create mode 100644 core/nfs-utils/PKGBUILD create mode 100644 core/nfs-utils/exports create mode 100644 core/nfs-utils/idmapd.conf create mode 100644 core/nfs-utils/kernel-3.0-segfault.patch create mode 100644 core/nfs-utils/nfs-common create mode 100644 core/nfs-utils/nfs-common.conf create mode 100644 core/nfs-utils/nfs-server create mode 100644 core/nfs-utils/nfs-server.conf create mode 100644 core/nfs-utils/nfs-utils-1.1.2-kerberos-ac.patch create mode 100644 core/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch create mode 100644 core/nfs-utils/nfs-utils-1.1.4-no-exec.patch create mode 100644 core/nfs-utils/nfs-utils-1.1.6-heimdal_functions.patch create mode 100644 core/nfs-utils/nfs-utils-1.1.6-no_libgssapi.patch create mode 100644 core/nfs-utils/nfs-utils.install create mode 100644 core/nfs-utils/start-statd.patch diff --git a/core/nfs-utils/18-dont-use-PAGE_SIZE.patch b/core/nfs-utils/18-dont-use-PAGE_SIZE.patch new file mode 100644 index 000000000..a2113e6d8 --- /dev/null +++ b/core/nfs-utils/18-dont-use-PAGE_SIZE.patch @@ -0,0 +1,20 @@ +PAGE_SIZE is not exported by all architectures as it is not fixed: it can depend on the model of the machine. So it's better to query the system configuration for the actual page size on the machine. + +--- + utils/blkmapd/device-process.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/utils/blkmapd/device-process.c b/utils/blkmapd/device-process.c +index 27ff374..652a7a8 100644 +--- a/utils/blkmapd/device-process.c ++++ b/utils/blkmapd/device-process.c +@@ -296,7 +296,7 @@ decode_blk_volume(uint32_t **pp, uint32_t *end, struct bl_volume *vols, int voln + off_t stripe_unit = vol->param.bv_stripe_unit; + /* Check limitations imposed by device-mapper */ + if ((stripe_unit & (stripe_unit - 1)) != 0 +- || stripe_unit < (off_t) (PAGE_SIZE >> 9)) ++ || stripe_unit < (off_t) (sysconf(_SC_PAGE_SIZE) >> 9)) + return -EIO; + BLK_READBUF(p, end, 4); + READ32(vol->bv_vol_n); + diff --git a/core/nfs-utils/PKGBUILD b/core/nfs-utils/PKGBUILD new file mode 100644 index 000000000..554780cbe --- /dev/null +++ b/core/nfs-utils/PKGBUILD @@ -0,0 +1,83 @@ +# $Id: PKGBUILD 139844 2011-10-05 07:58:31Z tpowa $ +# Maintainer: Tobias Powalowski +# Contributor: John Proctor +# Contributor: dibblethewrecker +# Contributor: abelstr +# Contributor: Marco Lima + +# ALARM: Kevin Mihelich +# - patch to not use PAGESIZE - not implemented for ARM + +plugrel=1 + +pkgname=nfs-utils +pkgver=1.2.5 +pkgrel=1 +pkgdesc="Support programs for Network File Systems" +arch=('i686' 'x86_64') +url='http://nfs.sourceforge.net' +license=('GPL') +backup=(etc/{exports,idmapd.conf} etc/conf.d/{nfs-common.conf,nfs-server.conf}) +depends=('glibc' 'e2fsprogs' 'rpcbind' 'libtirpc>=0.2.1' 'librpcsecgss>=0.19-2' 'nfsidmap' 'libevent>=2.0.10' 'libgssglue' 'device-mapper') +makedepends=('pkgconfig' 'autoconf' 'automake') +source=(http://downloads.sourceforge.net/project/nfs/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2 + nfs-common + nfs-common.conf + nfs-server + nfs-server.conf + exports + idmapd.conf + start-statd.patch + nfs-utils-1.1.4-mtab-sym.patch + nfs-utils-1.1.4-no-exec.patch + 18-dont-use-PAGE_SIZE.patch) +install=nfs-utils.install +md5sums=('8395ac770720b83c5c469f88306d7765' + 'dd0d65fc6e8f422fa12520813098264b' + 'f73f197a16b02c3e248488ec35c4cf43' + 'e619f18354ff958ed624d05d08853d8f' + '2bf71def3263325643a09458635520f0' + 'ff585faf410a62c4333a027c50b56bae' + 'eb4f4027fab6fc1201f1ca04f5954c76' + 'e9144277a89a620d9bc80413158a7d27' + '7674106eaaa4c149bccd4f05fe3604e9' + '4f4827dfc93008dfadd0a530ad0872b2' + '1a56922af585f4cc3ec4e7504f00c3a2') + +build() { + cd $srcdir/${pkgname}-${pkgver} + patch -Np1 -i ../nfs-utils-1.1.4-mtab-sym.patch + #patch -Np1 -i ../nfs-utils-1.1.4-no-exec.patch + # arch specific patch + patch -Np0 -i $srcdir/start-statd.patch + + # ALARM + patch -Np1 -i ../18-dont-use-PAGE_SIZE.patch + + ./configure --prefix=/usr --enable-nfsv3 --enable-nfsv4 --enable-gss \ + --without-tcp-wrappers --with-statedir=/var/lib/nfs \ + --enable-ipv6 --sysconfdir=/etc --enable-libmount-mount + + make +} + +package() { + cd $srcdir/${pkgname}-${pkgver} + make DESTDIR=$pkgdir install + + # support python2 (FS#25120) + sed -i '1s/python$/python2/' "$pkgdir"/usr/sbin/{nfsiostat,mountstats} + + # NFS & NFSv4 init scripts + install -D -m 755 ../nfs-common "$pkgdir/"etc/rc.d/nfs-common + install -D -m 755 ../nfs-server "$pkgdir/"etc/rc.d/nfs-server + # Configuration + install -D -m 644 ../exports "$pkgdir/"etc/exports + install -D -m 644 ../idmapd.conf "$pkgdir/"etc/idmapd.conf + install -D -m 644 ../nfs-common.conf "$pkgdir/"etc/conf.d/nfs-common.conf + install -D -m 644 ../nfs-server.conf "$pkgdir/"etc/conf.d/nfs-server.conf + # directories + mkdir "$pkgdir/"etc/exports.d + mkdir "$pkgdir/"var/lib/nfs/rpc_pipefs + mkdir "$pkgdir/"var/lib/nfs/v4recovery +} diff --git a/core/nfs-utils/exports b/core/nfs-utils/exports new file mode 100644 index 000000000..8f4aac598 --- /dev/null +++ b/core/nfs-utils/exports @@ -0,0 +1,15 @@ +# /etc/exports +# +# List of directories exported to NFS clients. See exports(5). +# Use exportfs -arv to reread. +# +# Example for NFSv2 and NFSv3: +# /srv/home hostname1(rw,sync) hostname2(ro,sync) +# +# Example for NFSv4: +# /srv/nfs4 hostname1(rw,sync,fsid=0) +# /srv/nfs4/home hostname1(rw,sync,nohide) +# Using Kerberos and integrity checking: +# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt) +# /srv/nfs4/home gss/krb5i(rw,sync,nohide) +# diff --git a/core/nfs-utils/idmapd.conf b/core/nfs-utils/idmapd.conf new file mode 100644 index 000000000..b1b23afe9 --- /dev/null +++ b/core/nfs-utils/idmapd.conf @@ -0,0 +1,14 @@ +[General] + +Verbosity = 0 +Pipefs-Directory = /var/lib/nfs/rpc_pipefs +Domain = localdomain + +[Mapping] + +Nobody-User = nobody +Nobody-Group = nobody + +[Translation] + +Method = nsswitch diff --git a/core/nfs-utils/kernel-3.0-segfault.patch b/core/nfs-utils/kernel-3.0-segfault.patch new file mode 100644 index 000000000..3dba94a05 --- /dev/null +++ b/core/nfs-utils/kernel-3.0-segfault.patch @@ -0,0 +1,53 @@ +mount.nfs segfaults if kernel version number does not contain +at least 3 components delimited with a dot. + +Avoid this by matching up to three unsigned integers inialised +to zero, separated by dots. + +A version that does not start with an integer is probably a future +version where the versioning evolved to another scheme. +Return UINT_MAX which is guaranteed to be higher than existing +versions. This would also make it possible to easily identify +versions that do not start with an integer. + +Signed-off-by: Luk Claes +--- + utils/mount/version.h | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/utils/mount/version.h b/utils/mount/version.h +index af61a6f..531cf68 100644 +--- a/utils/mount/version.h ++++ b/utils/mount/version.h +@@ -23,8 +23,8 @@ + #ifndef _NFS_UTILS_MOUNT_VERSION_H + #define _NFS_UTILS_MOUNT_VERSION_H + +-#include +-#include ++#include ++#include + + #include + +@@ -37,14 +37,16 @@ static inline unsigned int MAKE_VERSION(unsigned int p, unsigned int q, + static inline unsigned int linux_version_code(void) + { + struct utsname my_utsname; +- unsigned int p, q, r; ++ unsigned int p, q = 0, r = 0; + ++ /* UINT_MAX as backward compatibility code should not be run */ + if (uname(&my_utsname)) +- return 0; ++ return UINT_MAX; + +- p = (unsigned int)atoi(strtok(my_utsname.release, ".")); +- q = (unsigned int)atoi(strtok(NULL, ".")); +- r = (unsigned int)atoi(strtok(NULL, ".")); ++ /* UINT_MAX as future versions might not start with an integer */ ++ if (sscanf(my_utsname.release, "%u.%u.%u", &p, &q, &r) < 1) ++ return UINT_MAX; ++ + return MAKE_VERSION(p, q, r); + } diff --git a/core/nfs-utils/nfs-common b/core/nfs-utils/nfs-common new file mode 100644 index 000000000..7b16b4b3c --- /dev/null +++ b/core/nfs-utils/nfs-common @@ -0,0 +1,315 @@ +#!/bin/bash + +daemon_name=nfs-common + +NEED_STATD= +STATD_OPTS= +NEED_IDMAPD= +IDMAPD_OPTS= +NEED_GSSD= +GSSD_OPTS= +PIPEFS_MOUNTPOINT= +PIPEFS_MOUNTOPTS= + +# rpc.statd daemon & binary location +STATD_DAEMON_NAME=rpc.statd +STATD="/usr/sbin/rpc.statd" + +# rpc.idmapd daemon & binary location +IDMAPD_DAEMON_NAME=rpc.idmapd +IDMAPD="/usr/sbin/rpc.idmapd" + +# rpc.gssd daemon & binary location +GSSD_DAEMON_NAME=rpc.gssd +GSSD="/usr/sbin/rpc.gssd" + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/$daemon_name.conf + +# Default mountpoint and options for rpc_pipefs filesystem +[ -z "$PIPEFS_MOUNTPOINT" ] && PIPEFS_MOUNTPOINT="/var/lib/nfs/rpc_pipefs" +[ -z "$PIPEFS_MOUNTOPTS" ] && PIPEFS_MOUNTOPTS="defaults" + +# Parse the fstab file, and determine whether we need idmapd and gssd. (The +# /etc/conf.d/nfs-common settings, if any, will override our autodetection.) +AUTO_NEED_IDMAPD=no +AUTO_NEED_GSSD=no + +if [ -f /etc/fstab ]; then + exec 9<&0 /dev/null ; then + return 1 + fi + + if grep -vw "$1" /proc/mounts &> /dev/null ; then + if ! mountpoint -q "$2" ; then + mount -t "$1" "$1" "$2" -o "$3" + return + fi + fi + return 0 +} + +do_umount() { + if mountpoint -q "$1" ; then + umount "$1" + fi + return 0 +} + +get_pid() { + pidof -o %PPID "$1" +} + +case "$1" in + start) + ck_daemon rpcbind && { echo -n "Start rpcbind first." >&2; stat_die; } + rc=0 + if [ "$NEED_STATD" = yes ]; then + stat_busy "Starting $STATD_DAEMON_NAME daemon" + PID=$(get_pid $STATD) + if [ -z "$PID" ]; then + [ -f /var/run/$STATD_DAEMON_NAME.pid ] && rm -f /var/run/$STATD_DAEMON_NAME.pid + # RUN + $STATD $STATD_OPTS + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + echo $(get_pid $STATD) > /var/run/$STATD_DAEMON_NAME.pid + stat_done + fi + else + stat_fail + exit 1 + fi + # Run sm-notify + /usr/sbin/sm-notify $SMNOTIFY_OPTS + fi + + if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then + stat_busy "Mounting pipefs filesystem" + do_modprobe sunrpc + do_modprobe nfs + do_modprobe nfsd + do_mount rpc_pipefs "$PIPEFS_MOUNTPOINT" "$PIPEFS_MOUNTOPTS" + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + stat_done + fi + + if [ "$NEED_IDMAPD" = yes ]; then + stat_busy "Starting $IDMAPD_DAEMON_NAME daemon" + PID=$(get_pid $IDMAPD) + if [ -z "$PID" ]; then + [ -f /var/run/$IDMAPD_DAEMON_NAME.pid ] && rm -f /var/run/$IDMAPD_DAEMON_NAME.pid + # RUN + $IDMAPD $IDMAPD_OPTS + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + echo $(get_pid $IDMAPD) > /var/run/$IDMAPD_DAEMON_NAME.pid + stat_done + fi + else + stat_fail + exit 1 + fi + fi + + if [ "$NEED_GSSD" = yes ]; then + do_modprobe rpcsec_gss_krb5 + stat_busy "Starting $GSSD_DAEMON_NAME daemon" + PID=$(get_pid $GSSD) + if [ -z "$PID" ]; then + [ -f /var/run/$GSSD_DAEMON_NAME.pid ] && rm -f /var/run/$GSSD_DAEMON_NAME.pid + # RUN + $GSSD $GSSD_OPTS + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + echo $(get_pid $GSSD) > /var/run/$GSSD_DAEMON_NAME.pid + stat_done + fi + else + stat_fail + exit 1 + fi + fi + fi + + add_daemon $daemon_name + ;; + + stop) + rc=0 + if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then + + if [ "$NEED_GSSD" = yes ]; then + stat_busy "Stopping $GSSD_DAEMON_NAME daemon" + PID=$(get_pid $GSSD) + # KILL + [ ! -z "$PID" ] && kill $PID &> /dev/null + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + rm -f /var/run/$GSSD_DAEMON_NAME.pid &> /dev/null + stat_done + fi + fi + + if [ "$NEED_IDMAPD" = yes ]; then + stat_busy "Stopping $IDMAPD_DAEMON_NAME daemon" + PID=$(get_pid $IDMAPD) + # KILL + [ ! -z "$PID" ] && kill $PID &> /dev/null + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + rm -f /var/run/$IDMAPD_DAEMON_NAME.pid &> /dev/null + stat_done + fi + fi + do_umount "$PIPEFS_MOUNTPOINT" 2>/dev/null || true + fi + + if [ "$NEED_STATD" = yes ]; then + stat_busy "Stopping $STATD_DAEMON_NAME daemon" + PID=$(get_pid $STATD) + # KILL + [ ! -z "$PID" ] && kill $PID &> /dev/null + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + rm -f /var/run/$STATD_DAEMON_NAME.pid &> /dev/null + stat_done + fi + fi + + rm_daemon $daemon_name + ;; + + status) + stat_busy "Checking $daemon_name status"; + ck_status $daemon_name + + if [ "$NEED_STATD" = yes ]; then + stat_busy "Daemon $STATD_DAEMON_NAME running" + PID=$(get_pid $STATD) + if [ -z "$PID" ]; then + stat_fail + else + stat_done + fi + fi + + if [ "$NEED_GSSD" = yes ]; then + stat_busy "Daemon $GSSD_DAEMON_NAME running" + PID=$(get_pid $GSSD) + if [ -z "$PID" ]; then + stat_fail + else + stat_done + fi + fi + + if [ "$NEED_IDMAPD" = yes ]; then + stat_busy "Daemon $IDMAPD_DAEMON_NAME running" + PID=$(get_pid $IDMAPD) + if [ -z "$PID" ]; then + stat_fail + else + stat_done + fi + fi + echo + ;; + + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "usage: $0 {start|stop|status|restart}" +esac +exit 0 + diff --git a/core/nfs-utils/nfs-common.conf b/core/nfs-utils/nfs-common.conf new file mode 100644 index 000000000..12466b3e5 --- /dev/null +++ b/core/nfs-utils/nfs-common.conf @@ -0,0 +1,40 @@ +# Parameters to be passed to nfs-common (nfs clients & server) init script. +# + +# If you do not set values for the NEED_ options, they will be attempted +# autodetected; this should be sufficient for most people. Valid alternatives +# for the NEED_ options are "yes" and "no". + +# Do you want to start the statd daemon? It is not needed for NFSv4. +NEED_STATD="" + +# Options to pass to rpc.statd. +# See rpc.statd(8) for more details. +# N.B. statd normally runs on both client and server, and run-time +# options should be specified accordingly. +# STATD_OPTS="-p 32765 -o 32766" +STATD_OPTS="" + +# Options to pass to sm-notify +# e.g. SMNOTIFY_OPTS="-p 32764" +SMNOTIFY_OPTS="" + +# Do you want to start the idmapd daemon? It is only needed for NFSv4. +NEED_IDMAPD="" + +# Options to pass to rpc.idmapd. +# See rpc.idmapd(8) for more details. +IDMAPD_OPTS="" + +# Do you want to start the gssd daemon? It is required for Kerberos mounts. +NEED_GSSD="" + +# Options to pass to rpc.gssd. +# See rpc.gssd(8) for more details. +GSSD_OPTS="" + +# Where to mount rpc_pipefs filesystem; the default is "/var/lib/nfs/rpc_pipefs". +PIPEFS_MOUNTPOINT="" + +# Options used to mount rpc_pipefs filesystem; the default is "defaults". +PIPEFS_MOUNTOPTS="" diff --git a/core/nfs-utils/nfs-server b/core/nfs-utils/nfs-server new file mode 100644 index 000000000..6aa609d8c --- /dev/null +++ b/core/nfs-utils/nfs-server @@ -0,0 +1,299 @@ +#!/bin/bash + +daemon_name=nfs-server + +NFSD_COUNT= +NFSD_OPTS= +NEED_SVCGSSD= +SVCGSSD_OPTS= +MOUNTD_OPTS= +PROCNFSD_MOUNTPOINT= +PROCNFSD_MOUNTOPTS= + +# rpc.nfsd daemon & binary location +NFSD_PROCESS_NAME=nfsd +NFSD_DAEMON_NAME=rpc.nfsd +NFSD="/usr/sbin/rpc.nfsd" + +# rpc.svcgssd daemon & binary location +SVCGSSD_DAEMON_NAME=rpc.svcgssd +SVCGSSD="/usr/sbin/rpc.svcgssd" + +# rpc.idmapd daemon & binary location +IDMAPD_DAEMON_NAME=rpc.idmapd +IDMAPD="/usr/sbin/rpc.idmapd" + +# rpc.mountd daemon & binary location +MOUNTD_DAEMON_NAME=rpc.mountd +MOUNTD="/usr/sbin/rpc.mountd" + +# exortfs binary location +EXPORTFS="/usr/sbin/exportfs" + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/$daemon_name.conf + +# Default number of nfsd servers +[ -z "$NFSD_COUNT" ] && NFSD_COUNT=8 + +# Default mountpoint and options for nfsd filesystem +[ -z "$PROCNFSD_MOUNTPOINT" ] && PROCNFSD_MOUNTPOINT="/proc/fs/nfsd" +[ -z "$PROCNFSD_MOUNTOPTS" ] && PROCNFSD_MOUNTOPTS="rw,nodev,noexec,nosuid" + +case "$NEED_SVCGSSD" in + yes|no) + ;; + *) + NEED_SVCGSSD=no + ;; +esac + +do_modprobe() { + if [ -x /sbin/modprobe -a -f /proc/modules ]; then + modprobe -q "$1" || true + fi +} + +do_mount() { + if ! grep -E "$1\$" /proc/filesystems &> /dev/null ; then + return 1 + fi + + if grep -vw "$1" /proc/mounts &> /dev/null ; then + if ! mountpoint -q "$2" ; then + mount -t "$1" "$1" "$2" -o "$3" + return + fi + fi + return 0 +} + +do_umount() { + if mountpoint -q "$1" ; then + umount "$1" + fi + return 0 +} + +get_pid() { + pidof -o %PPID "$1" +} + +case "$1" in + start) + ck_daemon nfs-common && { echo -n "Start nfs-common first." >&2; stat_die; } + rc=0 + stat_busy "Mounting nfsd filesystem" + do_modprobe nfsd + do_mount nfsd "$PROCNFSD_MOUNTPOINT" "$PROCNFSD_MOUNTOPTS" + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + stat_done + fi + + stat_busy "Exporting all directories" + $EXPORTFS -r + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + stat_done + fi + + stat_busy "Starting $NFSD_DAEMON_NAME daemon" + PID=$(get_pid $NFSD_PROCESS_NAME) + if [ -z "$PID" ]; then + [ -f /var/run/$NFSD_DAEMON_NAME.pid ] && rm -f /var/run/$NFSD_DAEMON_NAME.pid + # RUN + $NFSD $NFSD_OPTS $NFSD_COUNT + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + echo $(get_pid $NFSD_PROCESS_NAME) > /var/run/$NFSD_DAEMON_NAME.pid + stat_done + fi + else + stat_fail + exit 1 + fi + + if [ "$NEED_SVCGSSD" = yes ]; then + do_modprobe rpcsec_gss_krb5 + stat_busy "Starting $SVCGSSD_DAEMON_NAME daemon" + PID=$(get_pid $SVCGSSD) + if [ -z "$PID" ]; then + [ -f /var/run/$SVCGSSD_DAEMON_NAME.pid ] && rm -f /var/run/$SVCGSSD_DAEMON_NAME.pid + # RUN + $SVCGSSD $SVCGSSD_OPTS + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + echo $(get_pid $SVCGSSD) > /var/run/$SVCGSSD_DAEMON_NAME.pid + stat_done + fi + else + stat_fail + exit 1 + fi + fi + + PID=$(get_pid $IDMAPD) + [ ! -z "$PID" ] && kill -SIGHUP $IDMAPD_DAEMON_NAME &> /dev/null + + stat_busy "Starting $MOUNTD_DAEMON_NAME daemon" + PID=$(get_pid $MOUNTD) + if [ -z "$PID" ]; then + [ -f /var/run/$MOUNTD_DAEMON_NAME.pid ] && rm -f /var/run/$MOUNTD_DAEMON_NAME.pid + # RUN + $MOUNTD $MOUNTD_OPTS + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + echo $(get_pid $MOUNTD) > /var/run/$MOUNTD_DAEMON_NAME.pid + stat_done + fi + else + stat_fail + exit 1 + fi + + add_daemon $daemon_name + ;; + + stop) + rc=0 + stat_busy "Stopping $MOUNTD_DAEMON_NAME daemon" + PID=$(get_pid $MOUNTD) + # KILL + [ ! -z "$PID" ] && kill $PID &> /dev/null + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + rm -f /var/run/$MOUNTD_DAEMON_NAME.pid &> /dev/null + stat_done + fi + + if [ "$NEED_SVCGSSD" = yes ]; then + stat_busy "Stopping $SVCGSSD_DAEMON_NAME daemon" + PID=$(get_pid $SVCGSSD) + # KILL + [ ! -z "$PID" ] && kill $PID &> /dev/null + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + rm -f /var/run/$SVCGSSD_DAEMON_NAME.pid &> /dev/null + stat_done + fi + fi + + stat_busy "Stopping $NFSD_DAEMON_NAME daemon" + PID=$(get_pid $NFSD_PROCESS_NAME) + # KILL (SIGINT) + [ ! -z "$PID" ] && kill -2 $PID &> /dev/null + # + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + sleep 1 + PID=$(get_pid $NFSD_PROCESS_NAME) + # KILL (KILL) - just to be sure + [ ! -z "$PID" ] && kill -9 $PID &> /dev/null + # + rm -f /var/run/$NFSD_DAEMON_NAME.pid &> /dev/null + stat_done + fi + + stat_busy "Unexporting all directories" + $EXPORTFS -au + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + stat_done + fi + + # flush everything out of the kernels export table + if mountpoint -q "$PROCNFSD_MOUNTPOINT" ; then + $EXPORTFS -f + fi + do_umount "$PROCNFSD_MOUNTPOINT" 2>/dev/null || true + rm_daemon $daemon_name + ;; + + status) + stat_busy "Checking $daemon_name status"; + ck_status $daemon_name + + stat_busy "Daemon $NFSD_DAEMON_NAME running" + PID=$(get_pid $NFSD_PROCESS_NAME) + if [ -z "$PID" ]; then + stat_fail + else + stat_done + fi + + stat_busy "Daemon $MOUNTD_DAEMON_NAME running" + PID=$(get_pid $MOUNTD) + if [ -z "$PID" ]; then + stat_fail + else + stat_done + fi + + if [ "$NEED_SVCGSSD" = yes ]; then + stat_busy "Daemon $SVCGSSD_DAEMON_NAME running" + PID=$(get_pid $SVCGSSD) + if [ -z "$PID" ]; then + stat_fail + else + stat_done + fi + fi + echo + ;; + + reload) + rc=0 + stat_busy "Re-exporting all directories" + $EXPORTFS -r + rc=$(($rc+$?)) + if [ $rc -gt 0 ]; then + stat_fail + exit $rc + else + stat_done + fi + ;; + + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "usage: $0 {start|stop|status|reload|restart}" +esac +exit 0 diff --git a/core/nfs-utils/nfs-server.conf b/core/nfs-utils/nfs-server.conf new file mode 100644 index 000000000..4054d6b88 --- /dev/null +++ b/core/nfs-utils/nfs-server.conf @@ -0,0 +1,29 @@ +# Parameters to be passed to nfs-server init script. +# + +# Options to pass to rpc.nfsd. +# See rpc.nfsd(8) for more details. +NFSD_OPTS="" + +# Number of servers to start up; the default is 8 servers. +NFSD_COUNT="" + +# Where to mount nfsd filesystem; the default is "/proc/fs/nfsd". +PROCNFSD_MOUNTPOINT="" + +# Options used to mount nfsd filesystem; the default is "rw,nodev,noexec,nosuid". +PROCNFSD_MOUNTOPTS="" + +# Options for rpc.mountd. +# If you have a port-based firewall, you might want to set up +# a fixed port here using the --port option. +# See rpc.mountd(8) for more details. +MOUNTD_OPTS="--no-nfs-version 2" + +# Do you want to start the svcgssd daemon? It is only required for Kerberos +# exports. Valid alternatives are "yes" and "no"; the default is "no". +NEED_SVCGSSD="" + +# Options to pass to rpc.svcgssd. +# See rpc.svcgssd(8) for more details. +SVCGSSD_OPTS="" diff --git a/core/nfs-utils/nfs-utils-1.1.2-kerberos-ac.patch b/core/nfs-utils/nfs-utils-1.1.2-kerberos-ac.patch new file mode 100644 index 000000000..4a5a138e7 --- /dev/null +++ b/core/nfs-utils/nfs-utils-1.1.2-kerberos-ac.patch @@ -0,0 +1,138 @@ +diff -NaurwB nfs-utils-1.1.2.orig/aclocal/kerberos5.m4 nfs-utils-1.1.2/aclocal/kerberos5.m4 +--- nfs-utils-1.1.2.orig/aclocal/kerberos5.m4 2008-03-14 16:46:29.000000000 +0100 ++++ nfs-utils-1.1.2/aclocal/kerberos5.m4 2008-06-12 17:13:51.000000000 +0200 +@@ -1,112 +1,48 @@ +-dnl Checks for Kerberos +-dnl NOTE: while we intend to do generic gss-api, currently we +-dnl have a requirement to get an initial Kerberos machine +-dnl credential. Thus, the requirement for Kerberos. +-dnl The Kerberos gssapi library will be dynamically loaded? + AC_DEFUN([AC_KERBEROS_V5],[ ++ K5CONFIG="krb5-config" + AC_MSG_CHECKING(for Kerberos v5) +- AC_ARG_WITH(krb5, +- [AC_HELP_STRING([--with-krb5=DIR], [use Kerberos v5 installation in DIR])], ++ AC_ARG_WITH(krb5-config, ++ [AC_HELP_STRING([--with-krb5-config=PATH], [Full Path to krb5-config.])], + [ case "$withval" in + yes|no) +- krb5_with="" ++ K5CONFIG="krb5-config" + ;; + *) +- krb5_with="$withval" ++ K5CONFIG="$withval" + ;; + esac ] + ) + +- for dir in $krb5_with /usr /usr/kerberos /usr/local /usr/local/krb5 \ +- /usr/krb5 /usr/heimdal /usr/local/heimdal /usr/athena ; do +- dnl This ugly hack brought on by the split installation of +- dnl MIT Kerberos on Fedora Core 1 +- K5CONFIG="" +- if test -f $dir/bin/krb5-config; then +- K5CONFIG=$dir/bin/krb5-config +- elif test -f "/usr/kerberos/bin/krb5-config"; then +- K5CONFIG="/usr/kerberos/bin/krb5-config" +- elif test -f "/usr/lib/mit/bin/krb5-config"; then +- K5CONFIG="/usr/lib/mit/bin/krb5-config" +- fi + if test "$K5CONFIG" != ""; then + KRBCFLAGS=`$K5CONFIG --cflags` + KRBLIBS=`$K5CONFIG --libs gssapi` +- K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(4),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'` +- AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number]) +- if test -f $dir/include/gssapi/gssapi_krb5.h -a \ +- \( -f $dir/lib/libgssapi_krb5.a -o \ +- -f $dir/lib64/libgssapi_krb5.a -o \ +- -f $dir/lib64/libgssapi_krb5.so -o \ +- -f $dir/lib/libgssapi_krb5.so \) ; then ++ if $K5CONFIG --version | grep -q -e heimdal; then ++ K5VERS=`$K5CONFIG --version | head -n 1 | cut -f2 -d ' ' | tr -d '.'` ++ AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries]) ++ gssapi_lib=gssapi ++ KRBIMPL="heimdal" ++ elif $K5CONFIG --version | grep -q -e mit; then ++ K5VERS=`$K5CONFIG --version | head -n 1 | cut -f4 -d ' ' | tr -d '.'` + AC_DEFINE(HAVE_KRB5, 1, [Define this if you have MIT Kerberos libraries]) +- KRBDIR="$dir" +- dnl If we are using MIT K5 1.3.1 and before, we *MUST* use the +- dnl private function (gss_krb5_ccache_name) to get correct +- dnl behavior of changing the ccache used by gssapi. +- dnl Starting in 1.3.2, we *DO NOT* want to use +- dnl gss_krb5_ccache_name, instead we want to set KRB5CCNAME +- dnl to get gssapi to use a different ccache + if test $K5VERS -le 131; then + AC_DEFINE(USE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the private function, gss_krb5_cache_name, must be used to tell the Kerberos library which credentials cache to use. Otherwise, this is done by setting the KRB5CCNAME environment variable]) + fi + gssapi_lib=gssapi_krb5 +- break +- dnl The following ugly hack brought on by the split installation +- dnl of Heimdal Kerberos on SuSe +- elif test \( -f $dir/include/heim_err.h -o\ +- -f $dir/include/heimdal/heim_err.h \) -a \ +- -f $dir/lib/libroken.a; then +- AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries]) +- KRBDIR="$dir" +- gssapi_lib=gssapi +- break +- fi +- fi +- done +- dnl We didn't find a usable Kerberos environment +- if test "x$KRBDIR" = "x"; then +- if test "x$krb5_with" = "x"; then +- AC_MSG_ERROR(Kerberos v5 with GSS support not found: consider --disable-gss or --with-krb5=) ++ KRBIMPL="mit-krb5" + else +- AC_MSG_ERROR(Kerberos v5 with GSS support not found at $krb5_with) +- fi ++ AC_MSG_ERROR(Unknown Kerberos 5 Implementation. Is neither heimdal or mit-krb5.) ++ KRBIMPL="unknown" + fi +- AC_MSG_RESULT($KRBDIR) +- +- dnl Check if -rpath=$(KRBDIR)/lib is needed +- echo "The current KRBDIR is $KRBDIR" +- if test "$KRBDIR/lib" = "/lib" -o "$KRBDIR/lib" = "/usr/lib" \ +- -o "$KRBDIR/lib" = "//lib" -o "$KRBDIR/lib" = "/usr//lib" ; then +- KRBLDFLAGS=""; +- elif /sbin/ldconfig -p | grep > /dev/null "=> $KRBDIR/lib/"; then +- KRBLDFLAGS=""; +- else +- KRBLDFLAGS="-Wl,-rpath=$KRBDIR/lib" ++ AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number]) + fi ++ AC_MSG_RESULT($KRBIMPL) + +- dnl Now check for functions within gssapi library +- AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context, +- AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIBS) +- AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes, +- AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS) +- AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name, +- AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS) +- +- dnl Check for newer error message facility +- AC_CHECK_LIB($gssapi_lib, krb5_get_error_message, +- AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE, 1, [Define this if the function krb5_get_error_message is available]), ,$KRBLIBS) ++ AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context, AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIBS) ++ AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes, AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS) ++ AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name, AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS) ++ AC_CHECK_LIB($gssapi_lib, krb5_get_error_message, AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE, 1, [Define this if the function krb5_get_error_message is available]), ,$KRBLIBS) ++ AC_CHECK_LIB($gssapi_lib, krb5_get_init_creds_opt_set_addressless, AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_SET_ADDRESSLESS, 1, [Define this if the function krb5_get_init_creds_opt_set_addressless is available]), ,$KRBLIBS) + +- dnl Check for function to specify addressless tickets +- AC_CHECK_LIB($gssapi_lib, krb5_get_init_creds_opt_set_addressless, +- AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_SET_ADDRESSLESS, 1, [Define this if the function krb5_get_init_creds_opt_set_addressless is available]), ,$KRBLIBS) +- +- dnl If they specified a directory and it didn't work, give them a warning +- if test "x$krb5_with" != "x" -a "$krb5_with" != "$KRBDIR"; then +- AC_MSG_WARN(Using $KRBDIR instead of requested value of $krb5_with for Kerberos!) +- fi +- +- AC_SUBST([KRBDIR]) + AC_SUBST([KRBLIBS]) + AC_SUBST([KRBCFLAGS]) + AC_SUBST([KRBLDFLAGS]) diff --git a/core/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch b/core/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch new file mode 100644 index 000000000..c9e60afc7 --- /dev/null +++ b/core/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch @@ -0,0 +1,39 @@ +ripped from Debian + +--- nfs-utils-1.1.4/utils/mount/fstab.c ++++ nfs-utils-1.1.4/utils/mount/fstab.c +@@ -57,7 +57,7 @@ mtab_does_not_exist(void) { + return var_mtab_does_not_exist; + } + +-static int ++int + mtab_is_a_symlink(void) { + get_mtab_info(); + return var_mtab_is_a_symlink; +--- nfs-utils-1.1.4/utils/mount/fstab.h ++++ nfs-utils-1.1.4/utils/mount/fstab.h +@@ -7,6 +7,7 @@ + #define _PATH_FSTAB "/etc/fstab" + #endif + ++int mtab_is_a_symlink(void); + int mtab_is_writable(void); + int mtab_does_not_exist(void); + void reset_mtab_info(void); +--- nfs-utils-1.1.4/utils/mount/mount.c ++++ nfs-utils-1.1.4/utils/mount/mount.c +@@ -230,6 +230,13 @@ create_mtab (void) { + int flags; + mntFILE *mfp; + ++ /* Avoid writing if the mtab is a symlink to /proc/mounts, since ++ that would create a file /proc/mounts in case the proc filesystem ++ is not mounted, and the fchmod below would also fail. */ ++ if (mtab_is_a_symlink()) { ++ return EX_SUCCESS; ++ } ++ + lock_mtab(); + + mfp = nfs_setmntent (MOUNTED, "a+"); diff --git a/core/nfs-utils/nfs-utils-1.1.4-no-exec.patch b/core/nfs-utils/nfs-utils-1.1.4-no-exec.patch new file mode 100644 index 000000000..ea50a21d8 --- /dev/null +++ b/core/nfs-utils/nfs-utils-1.1.4-no-exec.patch @@ -0,0 +1,15 @@ +ripped from Debian + +--- nfs-utils-1.1.2/utils/mount/mount.c ++++ nfs-utils-1.1.2/utils/mount/mount.c +@@ -381,10 +381,6 @@ + mount_error(NULL, mount_point, ENOTDIR); + return 1; + } +- if (access(mount_point, X_OK) < 0) { +- mount_error(NULL, mount_point, errno); +- return 1; +- } + + return 0; + } diff --git a/core/nfs-utils/nfs-utils-1.1.6-heimdal_functions.patch b/core/nfs-utils/nfs-utils-1.1.6-heimdal_functions.patch new file mode 100644 index 000000000..7f6c7a751 --- /dev/null +++ b/core/nfs-utils/nfs-utils-1.1.6-heimdal_functions.patch @@ -0,0 +1,69 @@ +diff -Naur nfs-utils-1.1.6.orig/utils/gssd/krb5_util.c nfs-utils-1.1.6/utils/gssd/krb5_util.c +--- utils/gssd/krb5_util.c 2009-04-20 19:32:50.000000000 +0200 ++++ utils/gssd/krb5_util.c 2009-04-20 20:57:31.000000000 +0200 +@@ -940,9 +940,37 @@ + { + krb5_error_code ret; + krb5_creds creds; +- krb5_cc_cursor cur; + int found = 0; + ++#ifdef HAVE_HEIMDAL ++ krb5_creds pattern; ++ krb5_realm *client_realm; ++ ++ krb5_cc_clear_mcred(&pattern); ++ ++ client_realm = krb5_princ_realm (context, principal); ++ ++ ret = krb5_make_principal (context, &pattern.server, ++ *client_realm, KRB5_TGS_NAME, *client_realm, ++ NULL); ++ if (ret) ++ krb5_err (context, 1, ret, "krb5_make_principal"); ++ pattern.client = principal; ++ ++ ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds); ++ krb5_free_principal (context, pattern.server); ++ if (ret) { ++ if (ret == KRB5_CC_END) ++ return 1; ++ krb5_err (context, 1, ret, "krb5_cc_retrieve_cred"); ++ } ++ ++ found = creds.times.endtime > time(NULL); ++ ++ krb5_free_cred_contents (context, &creds); ++#else ++ krb5_cc_cursor cur; ++ + ret = krb5_cc_start_seq_get(context, ccache, &cur); + if (ret) + return 0; +@@ -962,6 +990,7 @@ + krb5_free_cred_contents(context, &creds); + } + krb5_cc_end_seq_get(context, ccache, &cur); ++#endif + + return found; + } +@@ -1008,6 +1037,9 @@ + } + krb5_free_principal(context, principal); + err_princ: ++#ifdef HAVE_HEIMDAL ++#define KRB5_TC_OPENCLOSE 0x00000001 ++#endif + krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE); + krb5_cc_close(context, ccache); + err_cache: +@@ -1262,7 +1294,7 @@ + if (context != NULL) { + origmsg = krb5_get_error_message(context, code); + msg = strdup(origmsg); +- krb5_free_error_message(context, origmsg); ++ krb5_free_error_string(context, origmsg); + } + #endif + if (msg != NULL) diff --git a/core/nfs-utils/nfs-utils-1.1.6-no_libgssapi.patch b/core/nfs-utils/nfs-utils-1.1.6-no_libgssapi.patch new file mode 100644 index 000000000..917136a8c --- /dev/null +++ b/core/nfs-utils/nfs-utils-1.1.6-no_libgssapi.patch @@ -0,0 +1,57 @@ +Index: nfs-utils-1.1.6/utils/gssd/context_lucid.c +=================================================================== +--- nfs-utils-1.1.6.orig/utils/gssd/context_lucid.c ++++ nfs-utils-1.1.6/utils/gssd/context_lucid.c +@@ -51,8 +51,10 @@ + #include "context.h" + + #ifndef OM_uint64 ++#ifndef GSSAPI_GSSAPI_H_ + typedef uint64_t OM_uint64; + #endif ++#endif + + static int + write_lucid_keyblock(char **p, char *end, gss_krb5_lucid_key_t *key) +@@ -177,10 +179,10 @@ + int retcode = 0; + + printerr(2, "DEBUG: serialize_krb5_ctx: lucid version!\n"); +- maj_stat = gss_export_lucid_sec_context(&min_stat, &ctx, ++ maj_stat = gss_krb5_export_lucid_sec_context(&min_stat, &ctx, + 1, &return_ctx); + if (maj_stat != GSS_S_COMPLETE) { +- pgsserr("gss_export_lucid_sec_context", ++ pgsserr("gss_krb5_export_lucid_sec_context", + maj_stat, min_stat, &krb5oid); + goto out_err; + } +@@ -204,9 +206,9 @@ + else + retcode = prepare_krb5_rfc_cfx_buffer(lctx, buf, endtime); + +- maj_stat = gss_free_lucid_sec_context(&min_stat, ctx, return_ctx); ++ maj_stat = gss_krb5_free_lucid_sec_context(&min_stat, ctx); + if (maj_stat != GSS_S_COMPLETE) { +- pgsserr("gss_export_lucid_sec_context", ++ pgsserr("gss_krb5_export_lucid_sec_context", + maj_stat, min_stat, &krb5oid); + printerr(0, "WARN: failed to free lucid sec context\n"); + } +Index: nfs-utils-1.1.6/utils/gssd/krb5_util.c +=================================================================== +--- nfs-utils-1.1.6.orig/utils/gssd/krb5_util.c ++++ nfs-utils-1.1.6/utils/gssd/krb5_util.c +@@ -332,10 +332,10 @@ + return -1; + } + +- maj_stat = gss_set_allowable_enctypes(&min_stat, credh, &krb5oid, ++ maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, credh, + num_enctypes, &enctypes); + if (maj_stat != GSS_S_COMPLETE) { +- pgsserr("gss_set_allowable_enctypes", ++ pgsserr("gss_krb5_set_allowable_enctypes", + maj_stat, min_stat, &krb5oid); + gss_release_cred(&min_stat, &credh); + return -1; diff --git a/core/nfs-utils/nfs-utils.install b/core/nfs-utils/nfs-utils.install new file mode 100644 index 000000000..7dcdf9575 --- /dev/null +++ b/core/nfs-utils/nfs-utils.install @@ -0,0 +1,32 @@ +## arg 1: the new package version +post_install() { +cat << 'EOM' + ==> PLEASE NOTE: + ==> Extended configuration options for NFS (clients & server) are available in + ==> /etc/conf.d/nfs-common.conf and in /etc/conf.d/nfs-server.conf + ==> + ==> Please refer to http://wiki.archlinux.org/index.php/Nfs + ==> for further information on NFS; for NFSv4, refer to + ==> http://wiki.archlinux.org/index.php/NFSv4 +EOM +} + +## arg 1: the new package version +## arg 2: the old package version +post_upgrade() { + if [ "$(vercmp $2 1.2.0-2)" -lt 0 ]; then +cat << 'EOM' + ==> IMPORTANT NFS UTILS CHANGES: + ==> This is a rather important upgrade, you are going to have to change config files. + ==> /etc/rc.conf daemons changes: + ==> Change portmap to rpcbind + ==> Change nfslock to nfs-common + ==> Change nfsd to nfs-server + ==> + ==> Extended configuration options for NFS (clients & server) are available in: + ==> /etc/conf.d/nfs-common + ==> /etc/conf.d/nfs-server + ==> Please change them to your needs. +EOM + fi +} diff --git a/core/nfs-utils/start-statd.patch b/core/nfs-utils/start-statd.patch new file mode 100644 index 000000000..5d73b6e35 --- /dev/null +++ b/core/nfs-utils/start-statd.patch @@ -0,0 +1,22 @@ +--- utils/statd/start-statd 2007-05-11 04:40:57.000000000 +0100 ++++ utils/statd/start-statd.new 2007-09-21 17:11:34.000000000 +0100 +@@ -1,9 +1,16 @@ +-#!/bin/bash -p ++#!/bin/sh ++ ++# Original script provided by the NFS project ++# Modified for Arch Linux by Tom Killian ++ + # nfsmount calls this script when mounting a filesystem with locking + # enabled, but when statd does not seem to be running (based on + # /var/run/rpc.statd.pid). + # It should run statd with whatever flags are apropriate for this + # site. +-PATH=/sbin:/usr/sbin +-exec rpc.statd --no-notify ++ ++# source application-specific settings ++[ -f /etc/conf.d/nfs-common.conf ] && . /etc/conf.d/nfs-common.conf ++ ++exec /usr/sbin/rpc.statd $STATD_OPTS +