diff options
54 files changed, 2193 insertions, 208 deletions
diff --git a/community/aqbanking/PKGBUILD b/community/aqbanking/PKGBUILD index 34307fd4b..60dc5a9b5 100644 --- a/community/aqbanking/PKGBUILD +++ b/community/aqbanking/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 61641 2012-01-05 10:54:39Z spupykin $ +# $Id: PKGBUILD 74854 2012-08-07 14:17:14Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: David Moore <davidm@sjsoft.com> pkgname=aqbanking -pkgver=5.0.21 -_dnrel=91 +pkgver=5.0.25 +_dnrel=95 pkgrel=1 pkgdesc="A library for online banking and financial applications" arch=(i686 x86_64) @@ -14,7 +14,7 @@ license=('GPL') depends=('gwenhywfar' 'ktoblzcheck' 'libofx') options=('!makeflags' '!libtool') source=("aqbanking-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=03&release=${_dnrel}&file=01&dummy=aqbanking-$pkgver.tar.gz") -md5sums=('634dac2c82c583ed6643678bc214026e') +md5sums=('b238639962128ce25db81870f65173d9') build() { cd $srcdir/aqbanking-$pkgver diff --git a/community/bird/PKGBUILD b/community/bird/PKGBUILD index 084182dfa..ebc9f9ac1 100644 --- a/community/bird/PKGBUILD +++ b/community/bird/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 69079 2012-04-08 23:33:54Z seblu $ +# $Id: PKGBUILD 74872 2012-08-08 02:08:13Z seblu $ # Maintainer: Sébastien Luttringer <seblu@aur.archlinux.org> pkgbase=bird pkgname=('bird' 'bird6') -pkgver=1.3.7 -pkgrel=2 +pkgver=1.3.8 +pkgrel=1 arch=('i686' 'x86_64') url='http://bird.network.cz/' license=('GPL2') @@ -14,8 +14,8 @@ source=("ftp://bird.network.cz/pub/bird/${pkgname}-${pkgver}.tar.gz" 'bird.conf' 'bird.service' 'bird6.service') -md5sums=('c400b008ef834d9e7288dcdbe41b7c15' - '1a4b98756d64f52333a83eff2e95d233' +md5sums=('965fee1be1d5cd45ceef3926e49c18ce' + '5e5346a057f187f56cce928b7e423636' '25241a4d7ef639506e0080431b2c1690' 'e82a0519dca0b289685fda44787f5911' 'c32e7f6cf1be6ed6f9aa98feea25176d') @@ -69,7 +69,6 @@ package_bird6 () { # iniscripts files install -D -m 755 "$srcdir/bird.rc" "$pkgdir/etc/rc.d/bird6" install -D -m 644 "$srcdir/bird.conf" "$pkgdir/etc/conf.d/bird6" - sed -i 's/bird/bird6/' "$pkgdir/etc/rc.d/bird6" # systemd config file install -D -m 644 "$srcdir/bird6.service" "$pkgdir/usr/lib/systemd/system/bird6.service" } diff --git a/community/bird/bird.rc b/community/bird/bird.rc index 95fe65217..a3aa5e4ad 100644 --- a/community/bird/bird.rc +++ b/community/bird/bird.rc @@ -4,31 +4,30 @@ . /etc/rc.d/functions . /etc/conf.d/${0##*/} -NAME=bird -DAEMON=/usr/sbin/bird +DAEMON=/usr/sbin/${0##*/} PID=$(pidof -o %PPID $DAEMON) case "$1" in - start) - stat_busy "Starting $NAME daemon" - [[ ! $PID ]] && $DAEMON $DAEMON_OPTS && add_daemon $NAME && stat_done && exit 0 - stat_fail - ;; + start) + stat_busy "Starting ${0##*/} daemon" + [[ ! $PID ]] && $DAEMON $DAEMON_OPTS && add_daemon ${0##*/} && stat_done && exit 0 + stat_fail + ;; stop) - stat_busy "Stopping $NAME daemon" - [[ $PID ]] && kill $PID &> /dev/null && rm_daemon $NAME && stat_done && exit 0 - stat_fail - ;; + stat_busy "Stopping ${0##*/} daemon" + [[ $PID ]] && kill $PID &> /dev/null && rm_daemon ${0##*/} && stat_done && exit 0 + stat_fail + ;; restart) - $0 stop - $0 start - exit 0 - ;; - *) - echo "usage: ${0##*/} {start|stop|restart}" >&2 - ;; + $0 stop + $0 start + exit 0 + ;; + *) + echo "usage: ${0##*/} {start|stop|restart}" >&2 + ;; esac exit 1 -# vim:set ts=2 sw=2 ft=sh noet: +# vim:set ts=2 sw=2 ft=sh et: diff --git a/community/datemath/PKGBUILD b/community/datemath/PKGBUILD index a79868529..23688f4d4 100644 --- a/community/datemath/PKGBUILD +++ b/community/datemath/PKGBUILD @@ -1,21 +1,24 @@ -# $Id: PKGBUILD 65110 2012-02-20 04:48:43Z spupykin $ +# $Id: PKGBUILD 74846 2012-08-07 05:46:50Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: Todd Musall <tmusall@comcast.net> # Contributor: Todd Musall <tmusall@comcast.net> pkgname=datemath pkgver=2.0.10 -pkgrel=3 +pkgrel=4 pkgdesc="Command line date and time math utility." arch=('i686' 'x86_64') url="http://www.unixwiz.net/tools/datemath.html" license=("GPL") depends=('glibc') -source=(http://www.unixwiz.net/tools/$pkgname.tar.gz) -md5sums=('2c369d70a43313b71dbe3c7cc50207de') +source=(http://www.unixwiz.net/tools/$pkgname.tar.gz + y2k.patch) +md5sums=('2c369d70a43313b71dbe3c7cc50207de' + '87758503414a967f06566b94523fc010') build() { cd $srcdir + patch -Np0 <$srcdir/y2k.patch make install -D -m755 $srcdir/datemath $pkgdir/usr/bin/datemath } diff --git a/community/datemath/y2k.patch b/community/datemath/y2k.patch new file mode 100644 index 000000000..4605ad505 --- /dev/null +++ b/community/datemath/y2k.patch @@ -0,0 +1,29 @@ +diff -Naur ../datemath/util.c ./util.c +--- ../datemath/util.c 2004-03-06 18:27:59.000000000 +0100 ++++ ./util.c 2012-08-01 09:37:30.767738221 +0200 +@@ -18,6 +18,7 @@ + #include "defs.h" + + int century19_year = 40; /* 0..39 = 2000 / 40..99 = 1999 */ ++static int century; /* may not be 1900... */ + + /* + * jultoyymm() +@@ -35,6 +36,8 @@ + + if (mdy[YY] < 1900) /* too early? */ + mdy[YY] = 1900; ++ ++ century = mdy[YY] / 100; + + mdy[YY] %= 100; /* strip off 19xx */ + +@@ -59,7 +62,7 @@ + mdy[YY] = yymm / 100; + mdy[DD] = eflag ? daysinmm(mdy[MM], mdy[YY]) : 1; + +- mdy[YY] += 1900; ++ mdy[YY] += century * 100; + + if (rv = rmdyjul(mdy, &jdate), rv < 0) + die("bad date conversion in yymmtojul-(%d)", rv); diff --git a/community/ecryptfs-utils/PKGBUILD b/community/ecryptfs-utils/PKGBUILD index 3a892f8db..7bfc5c9d6 100644 --- a/community/ecryptfs-utils/PKGBUILD +++ b/community/ecryptfs-utils/PKGBUILD @@ -1,17 +1,18 @@ -# $Id: PKGBUILD 74760 2012-08-03 12:32:39Z tredaelli $ +# $Id: PKGBUILD 74862 2012-08-07 15:20:01Z tredaelli $ # Maintainer: Timothy Redaelli <timothy.redaelli@gmail.com> # Contributor: Richard Murri <admin@richardmurri.com> # Contributor: Michal Krenek <mikos@sg1.cz> pkgname=ecryptfs-utils pkgver=100 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') pkgdesc="Enterprise-class stacked cryptographic filesystem for Linux" url="https://launchpad.net/ecryptfs" license=('GPL') -makedepends=('swig' 'intltool' 'gettext') -depends=('keyutils' 'nss' 'python2') +makedepends=('swig' 'intltool' 'gettext' 'python2') +depends=('keyutils' 'nss' 'openssl') +optdepends=('python2: for python module') source=("http://launchpad.net/ecryptfs/trunk/${pkgver}/+download/${pkgname}_${pkgver}.orig.tar.gz") options=(!libtool) md5sums=('efaa5eabbd368268874536036397f73b') diff --git a/community/freerdp/PKGBUILD b/community/freerdp/PKGBUILD index 112d1fc57..183d850d0 100644 --- a/community/freerdp/PKGBUILD +++ b/community/freerdp/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 74601 2012-07-31 12:43:27Z spupykin $ +# $Id: PKGBUILD 74850 2012-08-07 11:38:18Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Stijn Segers <francesco dot borromini at gmail dot com> pkgname=freerdp pkgver=1.0.1 -pkgrel=7 +pkgrel=8 pkgdesc="Free RDP client" arch=('i686' 'x86_64') url="http://freerdp.sourceforge.net" @@ -15,11 +15,14 @@ makedepends=('krb5' 'cmake' 'damageproto' 'xmlto' 'docbook-xsl') conflicts=('freerdp-git') changelog=${pkgname}.changelog options=('!libtool') -source=(https://github.com/downloads/FreeRDP/FreeRDP/FreeRDP-$pkgver.tar.gz) -md5sums=('c843185e0ff22ce8409954651718f338') +source=(https://github.com/downloads/FreeRDP/FreeRDP/FreeRDP-$pkgver.tar.gz + https://github.com/FreeRDP/FreeRDP/commit/c10866db66c0d462ea7c2c38bb01740bcfb4fcb4.patch) +md5sums=('c843185e0ff22ce8409954651718f338' + '194fd599d0f706ecce772d5187e08385') build() { cd `find ${srcdir}/ -type d -name freerdp-\*` + patch -Np1 <$srcdir/c10866db66c0d462ea7c2c38bb01740bcfb4fcb4.patch cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ diff --git a/community/gwenhywfar/PKGBUILD b/community/gwenhywfar/PKGBUILD index 505ac1309..925fe53ea 100644 --- a/community/gwenhywfar/PKGBUILD +++ b/community/gwenhywfar/PKGBUILD @@ -1,9 +1,10 @@ -# $Id: PKGBUILD 61643 2012-01-05 10:55:35Z spupykin $ +# $Id: PKGBUILD 74856 2012-08-07 14:18:41Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: William Rea <sillywilly@gmail.com> pkgname=gwenhywfar -pkgver=4.3.1 +pkgver=4.3.3 +_dnrel=67 pkgrel=1 pkgdesc="OS abstraction functions for various projects" arch=(i686 x86_64) @@ -13,8 +14,8 @@ license=("LGPL") depends=('openssl' 'gnutls' 'libgcrypt') makedepends=('gtk2' 'qt') optdepends=('gtk2' 'qt') -source=("gwenhywfar-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=01&release=65&file=01&dummy=gwenhywfar-$pkgver.tar.gz") -md5sums=('63370a89befee90436720458d0c81cc5') +source=("gwenhywfar-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=01&release=${_dnrel}&file=01&dummy=gwenhywfar-$pkgver.tar.gz") +md5sums=('c5b9d52a25960f84f9264a5a5dd484d1') build() { pacman -Q gwenhywfar && return 1 diff --git a/community/ktoblzcheck/PKGBUILD b/community/ktoblzcheck/PKGBUILD index ad3e93f04..2f92c0577 100644 --- a/community/ktoblzcheck/PKGBUILD +++ b/community/ktoblzcheck/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 61645 2012-01-05 10:56:22Z spupykin $ +# $Id: PKGBUILD 74858 2012-08-07 14:19:39Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Philipp Sandhaus <philipp.sandhaus@gmx.de> pkgname=ktoblzcheck -pkgver=1.37 +pkgver=1.39 pkgrel=1 pkgdesc="A library to check account numbers and bank codes of German banks" arch=(i686 x86_64) @@ -14,7 +14,7 @@ depends=('gcc-libs' 'python') optdepends=('perl') source=(http://downloads.sourceforge.net/sourceforge/ktoblzcheck/ktoblzcheck-$pkgver.tar.gz ktoblzcheck-python3.patch) -md5sums=('93b540b5478bfb1b078613cbf1cc2446' +md5sums=('ef5efd6e2c31aaf6405060ec477c200c' 'a81a697bb3aaeffb7fac0ad7d9166e3f') build() { diff --git a/community/libcec/PKGBUILD b/community/libcec/PKGBUILD index 7ad92a44d..8440defc4 100644 --- a/community/libcec/PKGBUILD +++ b/community/libcec/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 74756 2012-08-03 11:00:41Z idevolder $ +# $Id: PKGBUILD 74867 2012-08-07 16:06:46Z idevolder $ # Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com> # Contributor: Philippe Cherel <philippe.cherel@mayenne.org> pkgname=libcec -pkgver=1.8.0 +pkgver=1.8.1 pkgrel=1 pkgdesc="Pulse-Eight's libcec for the Pulse-Eight USB-CEC adapter" arch=('i686' 'x86_64') @@ -11,8 +11,8 @@ url="https://github.com/Pulse-Eight/libcec" license=('GPL') depends=('udev' 'lockdev') source=("$pkgname-$pkgver.tar.gz::https://github.com/Pulse-Eight/libcec/tarball/$pkgname-$pkgver") -_srcfolder=Pulse-Eight-libcec-b0a5e4f -sha256sums=('3725d19cabec4bbd4142fd735bda43d33aad2a4a62b20ef337f395b549e7adec') +_srcfolder=Pulse-Eight-libcec-34a9cec +sha256sums=('97cda7935404360b56e3c0698deabcc97548bc357a4e4fecbe89de3db12ca0bc') options=(!libtool) build() { diff --git a/community/linux-tools/PKGBUILD b/community/linux-tools/PKGBUILD index a0541720d..d5fd8ce8b 100644 --- a/community/linux-tools/PKGBUILD +++ b/community/linux-tools/PKGBUILD @@ -1,28 +1,41 @@ -# $Id: PKGBUILD 74810 2012-08-06 02:37:26Z seblu $ +# $Id: PKGBUILD 74870 2012-08-07 22:24:52Z seblu $ # Maintainer: Sébastien Luttringer <seblu@aur.archlinux.org> pkgbase=linux-tools -pkgname=('perf' 'cpupower' 'x86_energy_perf_policy') +pkgname=('perf' 'cpupower' 'x86_energy_perf_policy' 'usbip') pkgver=3.5 -pkgrel=2 +pkgrel=3 license=('GPL2') arch=('i686' 'x86_64') url='http://www.kernel.org' options=('!strip') -makedepends=('asciidoc' 'xmlto') # split packages need all package dependencies set manually in makedepends -makedepends+=('python2' 'libnewt' 'elfutils' 'pciutils') +# kernel source deps +makedepends=('asciidoc' 'xmlto') +# perf deps +makedepends+=('perl' 'python2' 'libnewt' 'elfutils') +# cpupower deps +makedepends+=('pciutils') +# usbip deps +makedepends+=('glib2' 'sysfsutils') +groups=("$pkgbase") source=("http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$pkgver.tar.xz" # "http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.4.xz" - 'cpupower.rc' 'cpupower.conf' + 'cpupower.rc' 'cpupower.systemd' - 'cpupower.service') + 'cpupower.service' + 'usbipd.conf' + 'usbipd.rc' + 'usbipd.service') md5sums=('24153eaaa81dedc9481ada8cd9c3b83d' - '1d9214637968b91706b6e616a100d44b' '857ccdd0598511e3bf4b63522754dc48' + '1d9214637968b91706b6e616a100d44b' 'c0d17b5295fe964623c772a2dd981771' - '2450e8ff41b30eb58d43b5fffbfde1f4') + '2450e8ff41b30eb58d43b5fffbfde1f4' + 'e8fac9c45a628015644b4150b139278a' + '8a3831d962ff6a9968c0c20fd601cdec' + 'ba7c1c513314dd21fb2334fb8417738f') build() { # apply stable patching set @@ -54,11 +67,18 @@ build() { pushd linux-$pkgver/tools/power/x86/x86_energy_perf_policy make popd + + msg2 'Build usbip' + pushd linux-$pkgver/drivers/staging/usbip/userspace + ./autogen.sh + ./configure --prefix=/usr + make + popd } package_perf() { pkgdesc='Linux kernel performance auditing tool' - depends=('python2' 'libnewt' 'elfutils') + depends=('perl' 'python2' 'libnewt' 'elfutils') cd linux-$pkgver/tools/perf make \ @@ -74,7 +94,7 @@ package_perf() { package_cpupower() { pkgdesc='Linux kernel tool to examine and tune power saving related features of your processor' backup=('etc/conf.d/cpupower') - depends=('pciutils') + depends=('bash' 'pciutils') conflicts=('cpufrequtils') pushd linux-$pkgver/tools/power/cpupower @@ -84,7 +104,7 @@ package_cpupower() { docdir='/usr/share/doc/cpupower' \ install install-man popd - # install rc.d script + # install daemon scripts install -Dm 755 $pkgname.rc "$pkgdir/etc/rc.d/$pkgname" install -Dm 644 $pkgname.conf "$pkgdir/etc/conf.d/$pkgname" install -Dm 644 $pkgname.service "$pkgdir/usr/lib/systemd/system/$pkgname.service" @@ -93,10 +113,28 @@ package_cpupower() { package_x86_energy_perf_policy() { pkgdesc='Read or write MSR_IA32_ENERGY_PERF_BIAS' + depends=('glibc') cd linux-$pkgver/tools/power/x86/x86_energy_perf_policy install -Dm 755 x86_energy_perf_policy "$pkgdir/usr/bin/x86_energy_perf_policy" install -Dm 644 x86_energy_perf_policy.8 "$pkgdir/usr/share/man/man8/x86_energy_perf_policy.8" } +package_usbip() { + pkgdesc='An USB device sharing system over IP network' + depends=('glib2' 'sysfsutils') + options=('!libtool') + + pushd linux-$pkgver/drivers/staging/usbip/userspace + make install DESTDIR="$pkgdir" + popd + # module loading + install -Dm 644 /dev/null "$pkgdir/usr/lib/modules-load.d/$pkgname.conf" + printf 'usbip-core\nusbip-host\n' > "$pkgdir/usr/lib/modules-load.d/$pkgname.conf" + # install daemon scripts + install -Dm 755 usbipd.rc "$pkgdir/etc/rc.d/usbipd" + install -Dm 644 usbipd.conf "$pkgdir/etc/conf.d/usbipd" + install -Dm 644 usbipd.service "$pkgdir/usr/lib/systemd/system/usbipd.service" +} + # vim:set ts=2 sw=2 ft=sh et: diff --git a/community/linux-tools/usbipd.conf b/community/linux-tools/usbipd.conf new file mode 100644 index 000000000..5990b857a --- /dev/null +++ b/community/linux-tools/usbipd.conf @@ -0,0 +1,3 @@ +# vim:set ts=2 sw=2 ft=sh noet: + +DAEMON_OPTS='' diff --git a/community/linux-tools/usbipd.rc b/community/linux-tools/usbipd.rc new file mode 100644 index 000000000..15a1bcf00 --- /dev/null +++ b/community/linux-tools/usbipd.rc @@ -0,0 +1,34 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/${0##*/} + +DAEMON=/usr/sbin/usbipd +PID=$(pidof -o %PPID $DAEMON) +DAEMON_OPTS="--daemon $DAEMON_OPTS" + +case "$1" in + start) + stat_busy "Starting ${0##*/} daemon" + [[ ! $PID ]] && $DAEMON $DAEMON_OPTS && add_daemon ${0##*/} && stat_done && exit 0 + stat_fail + ;; + stop) + stat_busy "Stopping ${0##*/} daemon" + [[ $PID ]] && kill $PID &> /dev/null && rm_daemon ${0##*/} && stat_done && exit 0 + stat_fail + ;; + restart) + $0 stop + $0 start + exit 0 + ;; + *) + echo "usage: ${0##*/} {start|stop|restart}" >&2 + ;; +esac + +exit 1 + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/community/linux-tools/usbipd.service b/community/linux-tools/usbipd.service new file mode 100644 index 000000000..ac2f5f7c1 --- /dev/null +++ b/community/linux-tools/usbipd.service @@ -0,0 +1,8 @@ +[Unit] +Description=USB/IP server + +[Service] +ExecStart=/usr/sbin/usbipd + +[Install] +WantedBy=multi-user.target diff --git a/community/php-memcached/PKGBUILD b/community/php-memcached/PKGBUILD index b50ef485b..b03ce8559 100644 --- a/community/php-memcached/PKGBUILD +++ b/community/php-memcached/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 73393 2012-07-07 05:47:10Z foutrelis $ +# $Id: PKGBUILD 74848 2012-08-07 11:05:47Z foutrelis $ # Maintainer: Evangelos Foutras <evangelos@foutrelis.com> pkgname=php-memcached -pkgver=2.0.1 -pkgrel=5 +pkgver=2.1.0 +pkgrel=1 pkgdesc="PHP extension for interfacing with memcached via libmemcached library" arch=('i686' 'x86_64') url="http://pecl.php.net/package/memcached" @@ -11,7 +11,7 @@ license=('PHP') depends=('php' 'libmemcached') backup=('etc/php/conf.d/memcached.ini') source=(http://pecl.php.net/get/memcached-$pkgver.tgz) -sha256sums=('250779594e846b7b31390c384697eb24a5096123b0d3e2f4a1a0b79d14fb1bff') +sha256sums=('bc4940015be74f47908d410d7b55e10a3d5bf65674036d944c73558227fcc4af') build() { cd "$srcdir/memcached-$pkgver" diff --git a/community/python2-basemap/PKGBUILD b/community/python2-basemap/PKGBUILD index 9e350af3c..07220bde9 100644 --- a/community/python2-basemap/PKGBUILD +++ b/community/python2-basemap/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 73031 2012-06-28 18:07:29Z stephane $ +# $Id: PKGBUILD 74860 2012-08-07 15:09:34Z stephane $ # Maintainer: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Julien Morin <jmorin@cp.dias.ie> pkgname=python2-basemap -pkgver=1.0.4 +pkgver=1.0.5 pkgrel=1 pkgdesc="Toolkit for plotting data on map projections" arch=('i686' 'x86_64') @@ -12,7 +12,7 @@ license=('custom') depends=('python2-matplotlib' 'geos' 'shapelib' 'python2-numpy' 'python2-httplib2') optdepends=('python-imaging: Python Imaging Library is only needed for bluemarble and warpimage methods.') source=("http://downloads.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-${pkgver}/basemap-${pkgver}.tar.gz") -sha1sums=('b6d312129d2ae7fb612490516cf87daaf18cb033') +sha1sums=('14b6f5f645febbc73b23e8aea8fdb9e4b4b9adb4') build() { cd "${srcdir}/basemap-${pkgver}" diff --git a/community/tomoyo-tools/PKGBUILD b/community/tomoyo-tools/PKGBUILD index 3d9a68a18..86d8a19a1 100644 --- a/community/tomoyo-tools/PKGBUILD +++ b/community/tomoyo-tools/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 62767 2012-01-26 14:20:03Z spupykin $ +# $Id: PKGBUILD 74852 2012-08-07 13:20:49Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: Jamie Nguyen <jamie AT tomoyolinux.co.uk> pkgname=tomoyo-tools _basever=2.5.0 -_timestamp=20111025 +_timestamp=20120805 _file=53357 pkgver=${_basever}.${_timestamp} pkgrel=1 @@ -17,11 +17,11 @@ depends=('ncurses') conflicts=('ccs-tools') install=tomoyo-tools.install source=("http://sourceforge.jp/frs/redir.php?f=/tomoyo/${_file}/${pkgname}-${_basever}-${_timestamp}.tar.gz") -md5sums=('99999779698ea5f44c74d49e8c640ec1') +md5sums=('cccc7cb7f9492dc53063065f7ccf7b21') build() { cd "${srcdir}/${pkgname}" - make -j1 + make } package() { diff --git a/community/vidalia/PKGBUILD b/community/vidalia/PKGBUILD index 29f509fcf..c8b89840e 100644 --- a/community/vidalia/PKGBUILD +++ b/community/vidalia/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 73256 2012-07-04 13:05:20Z tredaelli $ +# $Id: PKGBUILD 74865 2012-08-07 15:48:23Z tredaelli $ # Maintainer: Timothy Redaelli <timothy.redaelli@gmail.com> # Contributor: Rorschach <r0rschach@lavabit.com> pkgname=vidalia -pkgver=0.2.19 -pkgrel=3 +pkgver=0.2.20 +pkgrel=1 pkgdesc="Controller GUI for Tor" url="https://www.torproject.org/vidalia" arch=('i686' 'x86_64') @@ -12,17 +12,13 @@ license=('GPL') depends=('qt' 'tor') makedepends=('cmake') install=vidalia.install -source=(https://www.torproject.org/vidalia/dist/$pkgname-$pkgver.tar.gz{,.asc} - bug6178.patch) -md5sums=('caf92b44ad2932bbc1c40d6405951c39' - '1ba45d7c91797e880d79a3fc85818dee' - 'bdc0855fef6b230ab63a5b523e853d4e') +source=(https://www.torproject.org/vidalia/dist/$pkgname-$pkgver.tar.gz{,.asc}) +md5sums=('f40a3a1c43f4a1f16322969c0cb6f5bf' + '703c872eb865f11027a6d6b02d2e5e72') build() { [[ -f /etc/profile.d/qt4.sh ]] && source /etc/profile.d/qt4.sh - patch -d "$srcdir/$pkgname-$pkgver" -i "$srcdir"/bug6178.patch -p1 - cd "$srcdir" mkdir build cd build diff --git a/extra/audacity/PKGBUILD b/extra/audacity/PKGBUILD index d51bb8a57..ef763c86a 100644 --- a/extra/audacity/PKGBUILD +++ b/extra/audacity/PKGBUILD @@ -1,15 +1,15 @@ -# $Id: PKGBUILD 162721 2012-06-29 02:41:45Z eric $ +# $Id: PKGBUILD 164991 2012-08-08 01:06:53Z eric $ # Maintainer: Eric Bélanger <eric@archlinux.org> pkgname=audacity pkgver=2.0.1 -pkgrel=1 +pkgrel=2 pkgdesc="A program that lets you manipulate digital audio waveforms" arch=('i686' 'x86_64') url="http://audacity.sourceforge.net/" license=('GPL') depends=('libmad' 'libid3tag' 'wxgtk' 'lame' 'hicolor-icon-theme' - 'desktop-file-utils' 'jack' 'soundtouch' 'ffmpeg') + 'desktop-file-utils' 'jack' 'soundtouch' 'ffmpeg-compat') options=('!makeflags') install=audacity.install source=(http://audacity.googlecode.com/files/${pkgname}-minsrc-${pkgver}.tar.bz2) @@ -17,7 +17,8 @@ sha1sums=('366a10f3bd71c4d84c29437fff1e27a8560f691b') build() { cd "${srcdir}/${pkgname}-src-${pkgver}" - WX_CONFIG=/usr/bin/wx-config ./configure --prefix=/usr \ + WX_CONFIG=/usr/bin/wx-config PKG_CONFIG_PATH+="/usr/lib/ffmpeg-compat/pkgconfig" \ + ./configure --prefix=/usr \ --with-portaudio --with-libsamplerate \ --without-libresample --with-libmad \ --with-ffmpeg --with-id3tag --with-libflac \ diff --git a/extra/cscope/PKGBUILD b/extra/cscope/PKGBUILD index 65f665d2e..a77200d2b 100644 --- a/extra/cscope/PKGBUILD +++ b/extra/cscope/PKGBUILD @@ -3,18 +3,19 @@ # Maintainer: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=cscope -pkgver=15.8 +pkgver=15.8.a +_realver=15.8a pkgrel=1 pkgdesc="A developers tool for browsing program code" arch=('i686' 'x86_64') url="http://cscope.sourceforge.net/" license=('BSD') depends=('ncurses' 'sh') -source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('7114b5838b3edcb3f5821efd444fff06') +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${_realver}.tar.gz) +md5sums=('b5c898ccedcfe2d4aa69537dad73b610') build() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd "${srcdir}/${pkgname}-${_realver}" sed -i 's|/usr/local/lib/cs|/usr/lib/cs|' contrib/ocs ./configure --prefix=/usr @@ -22,7 +23,7 @@ build() { } package() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd "${srcdir}/${pkgname}-${_realver}" make DESTDIR="${pkgdir}" install install -d ${pkgdir}/usr/lib/cs @@ -32,3 +33,4 @@ package() { install -Dm644 xcscope.el "${pkgdir}"/usr/share/emacs/site-lisp/xcscope.el install -m755 cscope-indexer "${pkgdir}"/usr/bin } + diff --git a/extra/kdeadmin/PKGBUILD b/extra/kdeadmin/PKGBUILD index 7e2109ba2..af83473b0 100644 --- a/extra/kdeadmin/PKGBUILD +++ b/extra/kdeadmin/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 164873 2012-08-06 23:16:11Z andrea $ +# $Id: PKGBUILD 164959 2012-08-07 15:57:09Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> @@ -8,9 +8,8 @@ pkgname=('kdeadmin-kcron' 'kdeadmin-kuser' 'kdeadmin-system-config-printer-kde') pkgver=4.9.0 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') -url='http://www.kde.org' license=('GPL' 'LGPL' 'FDL') groups=('kde' 'kdeadmin') makedepends=('cmake' 'automoc4' 'kdebindings-python2' 'system-config-printer-common') @@ -37,6 +36,7 @@ build() { package_kdeadmin-kcron() { pkgdesc='Configure and schedule tasks' + url='http://userbase.kde.org/KCron' depends=('kdelibs') cd $srcdir/build/kcron make DESTDIR=$pkgdir install @@ -71,6 +71,8 @@ package_kdeadmin-system-config-printer-kde() { url="http://kde.org/applications/system/printerapplet/" cd $srcdir/build/system-config-printer-kde make DESTDIR=$pkgdir install + cd $srcdir/build/doc/system-config-printer-kde + make DESTDIR=$pkgdir install # Use the python2 executable sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \ diff --git a/extra/kdepim/PKGBUILD b/extra/kdepim/PKGBUILD index 335a5de32..14b1a6b28 100644 --- a/extra/kdepim/PKGBUILD +++ b/extra/kdepim/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 164921 2012-08-06 23:20:54Z andrea $ +# $Id: PKGBUILD 164965 2012-08-07 16:32:21Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> @@ -18,9 +18,10 @@ pkgname=('kdepim-akonadiconsole' 'kdepim-korganizer' 'kdepim-kresources' 'kdepim-ktimetracker' + 'kdepim-ktnef' 'kdepim-libkdepim') pkgver=4.9.0 -pkgrel=2 +pkgrel=3 arch=('i686' 'x86_64') url='http://pim.kde.org' license=('GPL' 'LGPL' 'FDL') @@ -89,6 +90,10 @@ package_kdepim-console() { install='kdepim.install' cd "${srcdir}"/build/console make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/kabcclient + make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/konsolekalendar + make DESTDIR="${pkgdir}" install } package_kdepim-kaddressbook() { @@ -137,6 +142,8 @@ package_kdepim-kleopatra() { make DESTDIR="${pkgdir}" install cd "${srcdir}"/build/doc/kleopatra make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/kwatchgnupg + make DESTDIR="${pkgdir}" install } package_kdepim-kmail() { @@ -148,8 +155,9 @@ package_kdepim-kmail() { 'kdepim-mimelib' 'kdepim-plugins') replaces=('kdepim-kmailcvt' 'kdepim-ksendemail' 'kdepim-libksieve' 'kdepim-mimelib' 'kdepim-plugins') - for i in kmail doc/kmail kmailcvt importwizard ksendemail libksieve \ - messagelist mailfilteragent mailimporter ontologies kontact/plugins/kmail; do + for i in kmail doc/kmail kmailcvt archivemailagent backupmail \ + importwizard ksendemail libksieve messagelist mailfilteragent \ + mailimporter ontologies kontact/plugins/kmail; do cd "${srcdir}"/build/${i} make DESTDIR="${pkgdir}" install done @@ -164,6 +172,8 @@ package_kdepim-knode() { make DESTDIR="${pkgdir}" install cd "${srcdir}"/build/doc/knode make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/kioslave/news + make DESTDIR="${pkgdir}" install cd "${srcdir}"/build/kontact/plugins/knode make DESTDIR="${pkgdir}" install } @@ -189,7 +199,7 @@ package_kdepim-kontact() { conflcits=('kdepim-kontactinterfaces') replaces=('kdepim-kontactinterfaces') for i in kontact/src doc/kontact kontact/plugins/summary \ - kontact/plugins/specialdates; do + kontact/plugins/specialdates doc/kontact-admin; do cd "${srcdir}"/build/${i} make DESTDIR="${pkgdir}" install done @@ -228,6 +238,16 @@ package_kdepim-ktimetracker() { make DESTDIR="${pkgdir}" install } +package_kdepim-ktnef() { + pkgdesc='A viewer/extractor for TNEF files' + depends=('kdepim-libkdepim') + url="https://projects.kde.org/projects/kde/kdepim/ktnef" + cd "${srcdir}"/build/ktnef + make DESTDIR="${pkgdir}" install + cd "${srcdir}"/build/doc/ktnef + make DESTDIR="${pkgdir}" install +} + package_kdepim-libkdepim() { pkgdesc='Library for KDE PIM' groups=() @@ -238,10 +258,10 @@ package_kdepim-libkdepim() { replaces=('kdepim-icons' 'kdepim-libkleo' 'kdepim-libkpgp' 'kdepim-strigi-analyzer' 'kdepim-akonadi') for i in akonadi_next calendarsupport incidenceeditor-ng \ - kdgantt2 libkdepim libkdepimdbusinterfaces libkleo libkpgp \ - mailcommon messagecomposer messagecore messageviewer icons \ - strigi-analyzer templateparser plugins/messageviewer \ - plugins/ktexteditor; do + kdgantt2 libkdepim libkdepimdbusinterfaces libkleo libkpgp \ + mailcommon messagecomposer messagecore messageviewer icons \ + strigi-analyzer templateparser plugins/messageviewer \ + plugins/ktexteditor; do cd "${srcdir}"/build/${i} make DESTDIR="${pkgdir}" install done diff --git a/extra/kradio/PKGBUILD b/extra/kradio/PKGBUILD index f1bf4b731..2acd824e7 100644 --- a/extra/kradio/PKGBUILD +++ b/extra/kradio/PKGBUILD @@ -1,20 +1,20 @@ -# $Id: PKGBUILD 163153 2012-07-08 09:31:40Z ibiru $ +# $Id: PKGBUILD 164981 2012-08-07 18:56:07Z eric $ # Maintainer: # Contributor: Tobias Powalowski <tpowa@archlinux.org> pkgname=kradio -pkgver=4.0.4 -pkgrel=2 +pkgver=4.0.5 +pkgrel=1 arch=('i686' 'x86_64') license=('GPL2') pkgdesc="A comfortable KDE internet and AM/FM radio application" url="http://kradio.sourceforge.net/" depends=('kdebase-runtime' 'lirc-utils' 'libmms' 'ffmpeg') -makedepends=('automoc4' 'cmake') +makedepends=('automoc4' 'cmake' 'boost') install=$pkgname.install source=("http://downloads.sourceforge.net/$pkgname/kradio4-$pkgver.tar.bz2"{,.asc}) -md5sums=('4b5495a4f1dda21f7201bc8db0d4f95e' - '51c6d4ec0047d2df595b458bde285012') +md5sums=('d2ce6b9c12e66c8cdb300013aa0cb26a' + '3faef5c46547b14804839f367fd09d29') build() { cd "$srcdir" diff --git a/extra/libimobiledevice/HOME-segfault.patch b/extra/libimobiledevice/HOME-segfault.patch new file mode 100644 index 000000000..e48e6cb42 --- /dev/null +++ b/extra/libimobiledevice/HOME-segfault.patch @@ -0,0 +1,14 @@ +The patch fixes segfault when both $XDG_CONFIG_HOME and $HOME are unset +Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com> +--- src/userpref.c.orig 2012-06-04 17:04:57.387303630 +0300 ++++ src/userpref.c 2012-06-04 17:06:05.741301627 +0300 +@@ -125,6 +125,9 @@ + const char *cdir = getenv("XDG_CONFIG_HOME"); + if (!cdir) { + cdir = getenv("HOME"); ++ if (!cdir) { ++ cdir="/root"; ++ } + strcpy(__config_dir, cdir); + strcat(__config_dir, DIR_SEP_S); + strcat(__config_dir, ".config"); diff --git a/extra/libimobiledevice/PKGBUILD b/extra/libimobiledevice/PKGBUILD index b17bff63f..bc921ac16 100644 --- a/extra/libimobiledevice/PKGBUILD +++ b/extra/libimobiledevice/PKGBUILD @@ -1,21 +1,24 @@ -# $Id: PKGBUILD 164368 2012-07-31 19:43:16Z eric $ +# $Id: PKGBUILD 164989 2012-08-08 00:24:19Z tomegun $ # Maintainer : Ionut Biru <ibiru@archlinux.org> # Contributor: Gabriel Martinez < reitaka at gmail dot com > pkgname=libimobiledevice pkgver=1.1.4 -pkgrel=1 +pkgrel=2 pkgdesc="Is a software library that talks the protocols to support iPhone and iPod Touch devices on Linux" url="http://libimobiledevice.org/" arch=('i686' 'x86_64') license=('GPL2' 'LGPL2.1') depends=('usbmuxd' 'gnutls' 'libgcrypt') options=('!libtool') -source=(http://libimobiledevice.org/downloads/$pkgname-$pkgver.tar.bz2) +source=(http://libimobiledevice.org/downloads/$pkgname-$pkgver.tar.bz2 + HOME-segfault.patch) build() { cd "$pkgname-$pkgver" + patch -p0 < "$srcdir/HOME-segfault.patch" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr make } @@ -24,4 +27,5 @@ package() { cd "$pkgname-$pkgver" make DESTDIR="$pkgdir" install } -md5sums=('3f28cbc6a2e30d34685049c0abde5183') +md5sums=('3f28cbc6a2e30d34685049c0abde5183' + '0de709dbf8e79d0b00cca06f5e61d57c') diff --git a/extra/pekwm/PKGBUILD b/extra/pekwm/PKGBUILD index 6b35cbf6f..5ee7323e9 100644 --- a/extra/pekwm/PKGBUILD +++ b/extra/pekwm/PKGBUILD @@ -1,26 +1,31 @@ -# $Id: PKGBUILD 151921 2012-03-04 10:39:20Z andrea $ +# $Id: PKGBUILD 164983 2012-08-07 19:26:08Z eric $ # Maintainer: # Contributor: Kevin Piche <kevin@archlinux.org> # Contributor: Eddie Lozon <almostlucky@attbi.com> pkgname=pekwm -pkgver=0.1.14 +pkgver=0.1.15 pkgrel=1 pkgdesc="A small, fast, functional, and flexible window manager" arch=('i686' 'x86_64') license=('GPL') url='https://www.pekwm.org/projects/pekwm' depends=('gcc-libs' 'libjpeg' 'libpng' 'libxft' 'libxinerama' 'libxpm' 'libxrandr') -backup=(etc/pekwm/config - etc/pekwm/vars - etc/pekwm/autoproperties - etc/pekwm/start - etc/pekwm/keys - etc/pekwm/mouse - etc/pekwm/menu) +backup=(etc/pekwm/autoproperties + etc/pekwm/autoproperties_typerules + etc/pekwm/config + etc/pekwm/config_system + etc/pekwm/keys + etc/pekwm/menu + etc/pekwm/mouse + etc/pekwm/mouse_click + etc/pekwm/mouse_sloppy + etc/pekwm/mouse_system + etc/pekwm/start + etc/pekwm/vars) source=("http://www.pekwm.org/projects/pekwm/files/${pkgname}-${pkgver}.tar.bz2" 'pekwm.desktop') -md5sums=('bb9c01c81fe47620bcd9be0e2e4a10e6' +md5sums=('4db10ad191b77120429abd5a65c73cec' '5a78fc6653fbb0b7282ecf7f1f81e2c5') build() { diff --git a/extra/proftpd/PKGBUILD b/extra/proftpd/PKGBUILD index fd4f5e4a7..78759e944 100644 --- a/extra/proftpd/PKGBUILD +++ b/extra/proftpd/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 161293 2012-06-08 23:31:04Z tomegun $ +# $Id: PKGBUILD 164987 2012-08-07 20:14:43Z eric $ # Maintainer: # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=proftpd -pkgver=1.3.4a -pkgrel=5 +pkgver=1.3.4b +pkgrel=1 epoch=1 pkgdesc="A high-performance, scalable FTP server" arch=('i686' 'x86_64') @@ -12,8 +12,13 @@ url="http://www.proftpd.org" license=('GPL') depends=('libldap' 'libmysqlclient' 'postgresql-libs') backup=('etc/proftpd.conf' 'etc/conf.d/proftpd') -source=(ftp://ftp.proftpd.org/distrib/source/${pkgname}-${pkgver}.tar.bz2{,.asc} +source=(ftp://ftp.proftpd.org/distrib/source/${pkgname}-${pkgver}.tar.gz{,.asc} 'proftpd' 'proftpd.logrotate' 'proftpd.conf.d') +md5sums=('0871e0b93c9c3c88ca950b6d9a04aed2' + 'e5b9bd78029a15f82994efcb7ed2e9fb' + '8177292919acb2f087ded0bb7b2dcc32' + 'ddb09eb13131becdf0e081eef413116b' + '71d5932b0461c318ed68c2c0c2660736') build() { cd "${srcdir}/${pkgname}-${pkgver}" @@ -47,8 +52,3 @@ package() { # /var/run is a symlink to /run now rm -rf "${pkgdir}/var" } -md5sums=('4e3235dc1ef95d36e59721d70c5c489c' - '3b0f44496adb36640b7a6cc165556bcf' - '8177292919acb2f087ded0bb7b2dcc32' - 'ddb09eb13131becdf0e081eef413116b' - '71d5932b0461c318ed68c2c0c2660736') diff --git a/extra/samba/PKGBUILD b/extra/samba/PKGBUILD index d8347d089..e03adefb6 100644 --- a/extra/samba/PKGBUILD +++ b/extra/samba/PKGBUILD @@ -1,13 +1,13 @@ -# $Id: PKGBUILD 162373 2012-06-26 05:39:58Z tpowa $ +# $Id: PKGBUILD 164956 2012-08-07 10:42:12Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgbase=samba pkgname=('libwbclient' 'smbclient' 'samba') -pkgver=3.6.6 +pkgver=3.6.7 # We use the 'A' to fake out pacman's version comparators. Samba chooses # to append 'a','b',etc to their subsequent releases, which pamcan # misconstrues as alpha, beta, etc. Bad samba! -_realver=3.6.6 +_realver=3.6.7 pkgrel=1 arch=(i686 x86_64) url="http://www.samba.org" @@ -157,7 +157,7 @@ install='samba.install' install -D -m644 ${srcdir}/samba.conf ${pkgdir}/usr/lib/tmpfiles.d/samba.conf rm -rf ${pkgdir}/var/run } -md5sums=('0bea52842d172231c0c0e23ee570d7af' +md5sums=('b23be56c15dd52f64eb7ba54c0ea1ed5' 'a45a4283723be2b0ae32439dc4496a09' '5697da77590ec092cc8a883bae06093c' 'a4bbfa39fee95bba2e7ad6b535fae7e6' diff --git a/libre/ghostscript-libre/PKGBUILD b/libre/ghostscript-libre/PKGBUILD index b89a3095b..05804529d 100644 --- a/libre/ghostscript-libre/PKGBUILD +++ b/libre/ghostscript-libre/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 149732 2012-02-09 20:34:33Z andyrtr $ +# $Id: PKGBUILD 165015 2012-08-08 19:40:10Z andyrtr $ # Maintainer: AndyRTR <andyrtr@archlinux.org> -# Maintainer (Parabola): xihh -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): Joshua Haase <hahj87@gmail.com> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=ghostscript pkgname=ghostscript-libre -pkgver=9.05 +pkgver=9.06 pkgrel=1 pkgdesc="An interpreter for the PostScript language without non-free files" arch=('i686' 'x86_64' 'mips64el') @@ -15,12 +15,12 @@ makedepends=('gtk2' 'gnutls') optdepends=('texlive-core: needed for dvipdf' 'gtk2: needed for gsx') conflicts=('ghostscript') -replaces=('ghostscript-lrpng' 'ghostscript') -provides=('ghostscript-lprng' "ghostscript=$pkgver") +replaces=('ghostscript') +provides=("ghostscript=$pkgver") url="http://www.ghostscript.com/" source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2) options=('!libtool' '!makeflags') -md5sums=('8bcef1f33ddf8a4d12b2cf8da385c191') +md5sums=('46f9ebe40dc52755287b30704270db11') build() { cd ${srcdir}/ghostscript-${pkgver} diff --git a/libre/syslinux/PKGBUILD b/libre/syslinux/PKGBUILD index 1a76a6825..6269ae93c 100644 --- a/libre/syslinux/PKGBUILD +++ b/libre/syslinux/PKGBUILD @@ -1,11 +1,10 @@ -# $Id$ -# Maintainer: Thomas Bächler <thomas@archlinux.org> +# $Id: PKGBUILD 165001 2012-08-08 15:45:08Z tpowa $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> pkgname=syslinux pkgver=4.05 -pkgrel=4.3 +pkgrel=5 arch=('i686' 'x86_64') pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)" url="http://syslinux.zytor.com/" @@ -14,7 +13,7 @@ depends=('perl' 'glibc') optdepends=('perl-passwd-md5: For md5pass' 'perl-digest-sha1: For sha1pass' 'mtools: For mkdiskimage and syslinux support' - ) + 'gptfdisk: For GPT support') makedepends=('nasm') backup=('boot/syslinux/syslinux.cfg' 'boot/syslinux/splash.png') @@ -23,14 +22,8 @@ source=(http://www.kernel.org/pub/linux/utils/boot/syslinux/$pkgname-${pkgver}.t syslinux-dont-build-dos-windows-targets.patch syslinux.cfg syslinux-install_update - splash.png - fix-undefined-type-umode_t.patch) -md5sums=('82299242418385da1274c9479a778cb2' - '1528c376e43f0eaccaa80d8ad1bc13b4' - '8dc2afca3739667e892faf04eb97e7b1' - '680750f73dc2e587ac567d057d485813' - '0035b6cac6756a384b861eda8d33e4f7' - '8674f8a0f480f26b705570d699c78a2c') + avoid-using-ext2_fs.patch + splash.png) build() { # Do not try to build syslinux with our default LDFLAGS, it will fail @@ -38,8 +31,8 @@ build() { cd "$srcdir"/$pkgname-${pkgver} # Do not try to build the Windows or DOS installers patch -p1 -i "$srcdir"/syslinux-dont-build-dos-windows-targets.patch - # Fix unknown type name 'umode_t' error - patch -p1 -i "$srcdir"/fix-undefined-type-umode_t.patch + # fix #30084 + patch -Np1 -i "$srcdir"/avoid-using-ext2_fs.patch # Fix FHS manpage path sed 's|/usr/man|/usr/share/man|g' -i mk/syslinux.mk make @@ -59,3 +52,9 @@ package() { # move extlinux binary to /usr/sbin mv "$pkgdir"/sbin/extlinux "$pkgdir"/usr/sbin/extlinux } +md5sums=('82299242418385da1274c9479a778cb2' + '1528c376e43f0eaccaa80d8ad1bc13b4' + '8dc2afca3739667e892faf04eb97e7b1' + '680750f73dc2e587ac567d057d485813' + '2e2c674a71c0c0bf265d96cfc19ce985' + '0035b6cac6756a384b861eda8d33e4f7') diff --git a/libre/syslinux/avoid-using-ext2_fs.patch b/libre/syslinux/avoid-using-ext2_fs.patch new file mode 100644 index 000000000..9a166eefc --- /dev/null +++ b/libre/syslinux/avoid-using-ext2_fs.patch @@ -0,0 +1,965 @@ +From a1006762fa6f98750bb77d76dd992cb8ea9f9c99 Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" <hpa@zytor.com> +Date: Mon, 26 Mar 2012 22:51:09 -0700 +Subject: [PATCH] libinstaller: Avoid using <linux/ext2_fs.h> + +Don't use <linux/ext2_fs.h> if we can avoid it. + +The ioctl constants have been globalized and moved to <linux/fs.h>. +Use a private copy of ext2_fs.h from e2fsprogs with the ioctl +constants removed for the data structures. + +Do at least attempt backward compatibility for old kernel headers, but +no real hope of proper operation there... + +Signed-off-by: H. Peter Anvin <hpa@zytor.com> +--- + libinstaller/ext2fs/ext2_fs.h | 856 ++++++++++++++++++++++++++++++++++++++++++ + libinstaller/linuxioctl.h | 29 +- + libinstaller/syslxcom.c | 12 +- + 3 files changed, 886 insertions(+), 11 deletions(-) + create mode 100644 libinstaller/ext2fs/ext2_fs.h + +diff -urpN syslinux-4.05/libinstaller/ext2fs/ext2_fs.h.ext2 syslinux-4.05/libinstaller/ext2fs/ext2_fs.h +--- syslinux-4.05/libinstaller/ext2fs/ext2_fs.h.ext2 2012-08-06 09:48:43.797645032 -0400 ++++ syslinux-4.05/libinstaller/ext2fs/ext2_fs.h 2012-08-06 09:48:43.797645032 -0400 +@@ -0,0 +1,856 @@ ++/* ++ * linux/include/linux/ext2_fs.h ++ * ++ * Copyright (C) 1992, 1993, 1994, 1995 ++ * Remy Card (card@masi.ibp.fr) ++ * Laboratoire MASI - Institut Blaise Pascal ++ * Universite Pierre et Marie Curie (Paris VI) ++ * ++ * from ++ * ++ * linux/include/linux/minix_fs.h ++ * ++ * Copyright (C) 1991, 1992 Linus Torvalds ++ */ ++ ++#ifndef _EXT2FS_EXT2_FS_H ++#define _EXT2FS_EXT2_FS_H ++ ++#include <linux/types.h> ++ ++/* ++ * The second extended filesystem constants/structures ++ */ ++ ++/* ++ * Define EXT2FS_DEBUG to produce debug messages ++ */ ++#undef EXT2FS_DEBUG ++ ++/* ++ * Define EXT2_PREALLOCATE to preallocate data blocks for expanding files ++ */ ++#define EXT2_PREALLOCATE ++#define EXT2_DEFAULT_PREALLOC_BLOCKS 8 ++ ++/* ++ * The second extended file system version ++ */ ++#define EXT2FS_DATE "95/08/09" ++#define EXT2FS_VERSION "0.5b" ++ ++/* ++ * Special inode numbers ++ */ ++#define EXT2_BAD_INO 1 /* Bad blocks inode */ ++#define EXT2_ROOT_INO 2 /* Root inode */ ++#define EXT4_USR_QUOTA_INO 3 /* User quota inode */ ++#define EXT4_GRP_QUOTA_INO 4 /* Group quota inode */ ++#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */ ++#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */ ++#define EXT2_RESIZE_INO 7 /* Reserved group descriptors inode */ ++#define EXT2_JOURNAL_INO 8 /* Journal inode */ ++#define EXT2_EXCLUDE_INO 9 /* The "exclude" inode, for snapshots */ ++#define EXT4_REPLICA_INO 10 /* Used by non-upstream feature */ ++ ++/* First non-reserved inode for old ext2 filesystems */ ++#define EXT2_GOOD_OLD_FIRST_INO 11 ++ ++/* ++ * The second extended file system magic number ++ */ ++#define EXT2_SUPER_MAGIC 0xEF53 ++ ++#ifdef __KERNEL__ ++#define EXT2_SB(sb) (&((sb)->u.ext2_sb)) ++#else ++/* Assume that user mode programs are passing in an ext2fs superblock, not ++ * a kernel struct super_block. This will allow us to call the feature-test ++ * macros from user land. */ ++#define EXT2_SB(sb) (sb) ++#endif ++ ++/* ++ * Maximal count of links to a file ++ */ ++#define EXT2_LINK_MAX 65000 ++ ++/* ++ * Macro-instructions used to manage several block sizes ++ */ ++#define EXT2_MIN_BLOCK_LOG_SIZE 10 /* 1024 */ ++#define EXT2_MAX_BLOCK_LOG_SIZE 16 /* 65536 */ ++#define EXT2_MIN_BLOCK_SIZE (1 << EXT2_MIN_BLOCK_LOG_SIZE) ++#define EXT2_MAX_BLOCK_SIZE (1 << EXT2_MAX_BLOCK_LOG_SIZE) ++#ifdef __KERNEL__ ++#define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize) ++#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_blocksize_bits) ++#define EXT2_ADDR_PER_BLOCK_BITS(s) (EXT2_SB(s)->addr_per_block_bits) ++#define EXT2_INODE_SIZE(s) (EXT2_SB(s)->s_inode_size) ++#define EXT2_FIRST_INO(s) (EXT2_SB(s)->s_first_ino) ++#else ++#define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size) ++#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) ++#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ ++ EXT2_GOOD_OLD_INODE_SIZE : (s)->s_inode_size) ++#define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ ++ EXT2_GOOD_OLD_FIRST_INO : (s)->s_first_ino) ++#endif ++#define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof(__u32)) ++ ++/* ++ * Macro-instructions used to manage allocation clusters ++ */ ++#define EXT2_MIN_CLUSTER_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE ++#define EXT2_MAX_CLUSTER_LOG_SIZE 29 /* 512MB */ ++#define EXT2_MIN_CLUSTER_SIZE EXT2_MIN_BLOCK_SIZE ++#define EXT2_MAX_CLUSTER_SIZE (1 << EXT2_MAX_CLUSTER_LOG_SIZE) ++#define EXT2_CLUSTER_SIZE(s) (EXT2_MIN_BLOCK_SIZE << \ ++ (s)->s_log_cluster_size) ++#define EXT2_CLUSTER_SIZE_BITS(s) ((s)->s_log_cluster_size + 10) ++ ++/* ++ * Macro-instructions used to manage fragments ++ * ++ * Note: for backwards compatibility only, for the dump program. ++ * Ext2/3/4 will never support fragments.... ++ */ ++#define EXT2_MIN_FRAG_SIZE EXT2_MIN_BLOCK_SIZE ++#define EXT2_MAX_FRAG_SIZE EXT2_MAX_BLOCK_SIZE ++#define EXT2_MIN_FRAG_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE ++#define EXT2_FRAG_SIZE(s) EXT2_BLOCK_SIZE(s) ++#define EXT2_FRAGS_PER_BLOCK(s) 1 ++ ++/* ++ * ACL structures ++ */ ++struct ext2_acl_header /* Header of Access Control Lists */ ++{ ++ __u32 aclh_size; ++ __u32 aclh_file_count; ++ __u32 aclh_acle_count; ++ __u32 aclh_first_acle; ++}; ++ ++struct ext2_acl_entry /* Access Control List Entry */ ++{ ++ __u32 acle_size; ++ __u16 acle_perms; /* Access permissions */ ++ __u16 acle_type; /* Type of entry */ ++ __u16 acle_tag; /* User or group identity */ ++ __u16 acle_pad1; ++ __u32 acle_next; /* Pointer on next entry for the */ ++ /* same inode or on next free entry */ ++}; ++ ++/* ++ * Structure of a blocks group descriptor ++ */ ++struct ext2_group_desc ++{ ++ __u32 bg_block_bitmap; /* Blocks bitmap block */ ++ __u32 bg_inode_bitmap; /* Inodes bitmap block */ ++ __u32 bg_inode_table; /* Inodes table block */ ++ __u16 bg_free_blocks_count; /* Free blocks count */ ++ __u16 bg_free_inodes_count; /* Free inodes count */ ++ __u16 bg_used_dirs_count; /* Directories count */ ++ __u16 bg_flags; ++ __u32 bg_exclude_bitmap_lo; /* Exclude bitmap for snapshots */ ++ __u16 bg_block_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_inode_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_itable_unused; /* Unused inodes count */ ++ __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/ ++}; ++ ++/* ++ * Structure of a blocks group descriptor ++ */ ++struct ext4_group_desc ++{ ++ __u32 bg_block_bitmap; /* Blocks bitmap block */ ++ __u32 bg_inode_bitmap; /* Inodes bitmap block */ ++ __u32 bg_inode_table; /* Inodes table block */ ++ __u16 bg_free_blocks_count; /* Free blocks count */ ++ __u16 bg_free_inodes_count; /* Free inodes count */ ++ __u16 bg_used_dirs_count; /* Directories count */ ++ __u16 bg_flags; /* EXT4_BG_flags (INODE_UNINIT, etc) */ ++ __u32 bg_exclude_bitmap_lo; /* Exclude bitmap for snapshots */ ++ __u16 bg_block_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_inode_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_itable_unused; /* Unused inodes count */ ++ __u16 bg_checksum; /* crc16(sb_uuid+group+desc) */ ++ __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ ++ __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ ++ __u32 bg_inode_table_hi; /* Inodes table block MSB */ ++ __u16 bg_free_blocks_count_hi;/* Free blocks count MSB */ ++ __u16 bg_free_inodes_count_hi;/* Free inodes count MSB */ ++ __u16 bg_used_dirs_count_hi; /* Directories count MSB */ ++ __u16 bg_itable_unused_hi; /* Unused inodes count MSB */ ++ __u32 bg_exclude_bitmap_hi; /* Exclude bitmap block MSB */ ++ __u16 bg_block_bitmap_csum_hi;/* crc32c(s_uuid+grp_num+bitmap) MSB */ ++ __u16 bg_inode_bitmap_csum_hi;/* crc32c(s_uuid+grp_num+bitmap) MSB */ ++ __u32 bg_reserved; ++}; ++ ++#define EXT2_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not initialized */ ++#define EXT2_BG_BLOCK_UNINIT 0x0002 /* Block bitmap not initialized */ ++#define EXT2_BG_INODE_ZEROED 0x0004 /* On-disk itable initialized to zero */ ++ ++/* ++ * Data structures used by the directory indexing feature ++ * ++ * Note: all of the multibyte integer fields are little endian. ++ */ ++ ++/* ++ * Note: dx_root_info is laid out so that if it should somehow get ++ * overlaid by a dirent the two low bits of the hash version will be ++ * zero. Therefore, the hash version mod 4 should never be 0. ++ * Sincerely, the paranoia department. ++ */ ++struct ext2_dx_root_info { ++ __u32 reserved_zero; ++ __u8 hash_version; /* 0 now, 1 at release */ ++ __u8 info_length; /* 8 */ ++ __u8 indirect_levels; ++ __u8 unused_flags; ++}; ++ ++#define EXT2_HASH_LEGACY 0 ++#define EXT2_HASH_HALF_MD4 1 ++#define EXT2_HASH_TEA 2 ++#define EXT2_HASH_LEGACY_UNSIGNED 3 /* reserved for userspace lib */ ++#define EXT2_HASH_HALF_MD4_UNSIGNED 4 /* reserved for userspace lib */ ++#define EXT2_HASH_TEA_UNSIGNED 5 /* reserved for userspace lib */ ++ ++#define EXT2_HASH_FLAG_INCOMPAT 0x1 ++ ++struct ext2_dx_entry { ++ __u32 hash; ++ __u32 block; ++}; ++ ++struct ext2_dx_countlimit { ++ __u16 limit; ++ __u16 count; ++}; ++ ++ ++/* ++ * Macro-instructions used to manage group descriptors ++ */ ++#define EXT2_MIN_DESC_SIZE 32 ++#define EXT2_MIN_DESC_SIZE_64BIT 64 ++#define EXT2_MAX_DESC_SIZE EXT2_MIN_BLOCK_SIZE ++#define EXT2_DESC_SIZE(s) \ ++ ((EXT2_SB(s)->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ? \ ++ (s)->s_desc_size : EXT2_MIN_DESC_SIZE) ++ ++#define EXT2_BLOCKS_PER_GROUP(s) (EXT2_SB(s)->s_blocks_per_group) ++#define EXT2_INODES_PER_GROUP(s) (EXT2_SB(s)->s_inodes_per_group) ++#define EXT2_CLUSTERS_PER_GROUP(s) (EXT2_SB(s)->s_clusters_per_group) ++#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) ++/* limits imposed by 16-bit value gd_free_{blocks,inode}_count */ ++#define EXT2_MAX_BLOCKS_PER_GROUP(s) ((((unsigned) 1 << 16) - 8) * \ ++ (EXT2_CLUSTER_SIZE(s) / \ ++ EXT2_BLOCK_SIZE(s))) ++#define EXT2_MAX_CLUSTERS_PER_GROUP(s) (((unsigned) 1 << 16) - 8) ++#define EXT2_MAX_INODES_PER_GROUP(s) (((unsigned) 1 << 16) - \ ++ EXT2_INODES_PER_BLOCK(s)) ++#ifdef __KERNEL__ ++#define EXT2_DESC_PER_BLOCK(s) (EXT2_SB(s)->s_desc_per_block) ++#define EXT2_DESC_PER_BLOCK_BITS(s) (EXT2_SB(s)->s_desc_per_block_bits) ++#else ++#define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_DESC_SIZE(s)) ++#endif ++ ++/* ++ * Constants relative to the data blocks ++ */ ++#define EXT2_NDIR_BLOCKS 12 ++#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS ++#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1) ++#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) ++#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) ++ ++/* ++ * Inode flags ++ */ ++#define EXT2_SECRM_FL 0x00000001 /* Secure deletion */ ++#define EXT2_UNRM_FL 0x00000002 /* Undelete */ ++#define EXT2_COMPR_FL 0x00000004 /* Compress file */ ++#define EXT2_SYNC_FL 0x00000008 /* Synchronous updates */ ++#define EXT2_IMMUTABLE_FL 0x00000010 /* Immutable file */ ++#define EXT2_APPEND_FL 0x00000020 /* writes to file may only append */ ++#define EXT2_NODUMP_FL 0x00000040 /* do not dump file */ ++#define EXT2_NOATIME_FL 0x00000080 /* do not update atime */ ++/* Reserved for compression usage... */ ++#define EXT2_DIRTY_FL 0x00000100 ++#define EXT2_COMPRBLK_FL 0x00000200 /* One or more compressed clusters */ ++#define EXT2_NOCOMPR_FL 0x00000400 /* Access raw compressed data */ ++#define EXT2_ECOMPR_FL 0x00000800 /* Compression error */ ++/* End compression flags --- maybe not all used */ ++#define EXT2_BTREE_FL 0x00001000 /* btree format dir */ ++#define EXT2_INDEX_FL 0x00001000 /* hash-indexed directory */ ++#define EXT2_IMAGIC_FL 0x00002000 ++#define EXT3_JOURNAL_DATA_FL 0x00004000 /* file data should be journaled */ ++#define EXT2_NOTAIL_FL 0x00008000 /* file tail should not be merged */ ++#define EXT2_DIRSYNC_FL 0x00010000 /* Synchronous directory modifications */ ++#define EXT2_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/ ++#define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */ ++#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ ++#define EXT4_EA_INODE_FL 0x00200000 /* Inode used for large EA */ ++/* EXT4_EOFBLOCKS_FL 0x00400000 was here */ ++#define EXT4_SNAPFILE_FL 0x01000000 /* Inode is a snapshot */ ++#define EXT4_SNAPFILE_DELETED_FL 0x04000000 /* Snapshot is being deleted */ ++#define EXT4_SNAPFILE_SHRUNK_FL 0x08000000 /* Snapshot shrink has completed */ ++#define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */ ++ ++#define EXT2_FL_USER_VISIBLE 0x004BDFFF /* User visible flags */ ++#define EXT2_FL_USER_MODIFIABLE 0x004B80FF /* User modifiable flags */ ++ ++/* ++ * ioctl commands ++ */ ++ ++/* Used for online resize */ ++struct ext2_new_group_input { ++ __u32 group; /* Group number for this data */ ++ __u32 block_bitmap; /* Absolute block number of block bitmap */ ++ __u32 inode_bitmap; /* Absolute block number of inode bitmap */ ++ __u32 inode_table; /* Absolute block number of inode table start */ ++ __u32 blocks_count; /* Total number of blocks in this group */ ++ __u16 reserved_blocks; /* Number of reserved blocks in this group */ ++ __u16 unused; /* Number of reserved GDT blocks in group */ ++}; ++ ++struct ext4_new_group_input { ++ __u32 group; /* Group number for this data */ ++ __u64 block_bitmap; /* Absolute block number of block bitmap */ ++ __u64 inode_bitmap; /* Absolute block number of inode bitmap */ ++ __u64 inode_table; /* Absolute block number of inode table start */ ++ __u32 blocks_count; /* Total number of blocks in this group */ ++ __u16 reserved_blocks; /* Number of reserved blocks in this group */ ++ __u16 unused; ++}; ++ ++#ifdef __GNU__ /* Needed for the Hurd */ ++#define _IOT_ext2_new_group_input _IOT (_IOTS(__u32), 5, _IOTS(__u16), 2, 0, 0) ++#endif ++ ++#define EXT2_IOC_GETFLAGS _IOR('f', 1, long) ++#define EXT2_IOC_SETFLAGS _IOW('f', 2, long) ++#define EXT2_IOC_GETVERSION _IOR('v', 1, long) ++#define EXT2_IOC_SETVERSION _IOW('v', 2, long) ++#define EXT2_IOC_GETVERSION_NEW _IOR('f', 3, long) ++#define EXT2_IOC_SETVERSION_NEW _IOW('f', 4, long) ++#define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) ++#define EXT2_IOC_GROUP_ADD _IOW('f', 8,struct ext2_new_group_input) ++#define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input) ++#define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64) ++ ++/* ++ * Structure of an inode on the disk ++ */ ++struct ext2_inode { ++ __u16 i_mode; /* File mode */ ++ __u16 i_uid; /* Low 16 bits of Owner Uid */ ++ __u32 i_size; /* Size in bytes */ ++ __u32 i_atime; /* Access time */ ++ __u32 i_ctime; /* Inode change time */ ++ __u32 i_mtime; /* Modification time */ ++ __u32 i_dtime; /* Deletion Time */ ++ __u16 i_gid; /* Low 16 bits of Group Id */ ++ __u16 i_links_count; /* Links count */ ++ __u32 i_blocks; /* Blocks count */ ++ __u32 i_flags; /* File flags */ ++ union { ++ struct { ++ __u32 l_i_version; /* was l_i_reserved1 */ ++ } linux1; ++ struct { ++ __u32 h_i_translator; ++ } hurd1; ++ } osd1; /* OS dependent 1 */ ++ __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ ++ __u32 i_generation; /* File version (for NFS) */ ++ __u32 i_file_acl; /* File ACL */ ++ __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ ++ __u32 i_faddr; /* Fragment address */ ++ union { ++ struct { ++ __u16 l_i_blocks_hi; ++ __u16 l_i_file_acl_high; ++ __u16 l_i_uid_high; /* these 2 fields */ ++ __u16 l_i_gid_high; /* were reserved2[0] */ ++ __u16 l_i_checksum_lo; /* crc32c(uuid+inum+inode) */ ++ __u16 l_i_reserved; ++ } linux2; ++ struct { ++ __u8 h_i_frag; /* Fragment number */ ++ __u8 h_i_fsize; /* Fragment size */ ++ __u16 h_i_mode_high; ++ __u16 h_i_uid_high; ++ __u16 h_i_gid_high; ++ __u32 h_i_author; ++ } hurd2; ++ } osd2; /* OS dependent 2 */ ++}; ++ ++/* ++ * Permanent part of an large inode on the disk ++ */ ++struct ext2_inode_large { ++ __u16 i_mode; /* File mode */ ++ __u16 i_uid; /* Low 16 bits of Owner Uid */ ++ __u32 i_size; /* Size in bytes */ ++ __u32 i_atime; /* Access time */ ++ __u32 i_ctime; /* Inode Change time */ ++ __u32 i_mtime; /* Modification time */ ++ __u32 i_dtime; /* Deletion Time */ ++ __u16 i_gid; /* Low 16 bits of Group Id */ ++ __u16 i_links_count; /* Links count */ ++ __u32 i_blocks; /* Blocks count */ ++ __u32 i_flags; /* File flags */ ++ union { ++ struct { ++ __u32 l_i_version; /* was l_i_reserved1 */ ++ } linux1; ++ struct { ++ __u32 h_i_translator; ++ } hurd1; ++ } osd1; /* OS dependent 1 */ ++ __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ ++ __u32 i_generation; /* File version (for NFS) */ ++ __u32 i_file_acl; /* File ACL */ ++ __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ ++ __u32 i_faddr; /* Fragment address */ ++ union { ++ struct { ++ __u16 l_i_blocks_hi; ++ __u16 l_i_file_acl_high; ++ __u16 l_i_uid_high; /* these 2 fields */ ++ __u16 l_i_gid_high; /* were reserved2[0] */ ++ __u16 l_i_checksum_lo; /* crc32c(uuid+inum+inode) */ ++ __u16 l_i_reserved; ++ } linux2; ++ struct { ++ __u8 h_i_frag; /* Fragment number */ ++ __u8 h_i_fsize; /* Fragment size */ ++ __u16 h_i_mode_high; ++ __u16 h_i_uid_high; ++ __u16 h_i_gid_high; ++ __u32 h_i_author; ++ } hurd2; ++ } osd2; /* OS dependent 2 */ ++ __u16 i_extra_isize; ++ __u16 i_checksum_hi; /* crc32c(uuid+inum+inode) */ ++ __u32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */ ++ __u32 i_mtime_extra; /* extra Modification time (nsec << 2 | epoch) */ ++ __u32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */ ++ __u32 i_crtime; /* File creation time */ ++ __u32 i_crtime_extra; /* extra File creation time (nsec << 2 | epoch)*/ ++ __u32 i_version_hi; /* high 32 bits for 64-bit version */ ++}; ++ ++#define i_dir_acl i_size_high ++ ++#if defined(__KERNEL__) || defined(__linux__) ++#define i_reserved1 osd1.linux1.l_i_reserved1 ++#define i_frag osd2.linux2.l_i_frag ++#define i_fsize osd2.linux2.l_i_fsize ++#define i_uid_low i_uid ++#define i_gid_low i_gid ++#define i_uid_high osd2.linux2.l_i_uid_high ++#define i_gid_high osd2.linux2.l_i_gid_high ++#else ++#if defined(__GNU__) ++ ++#define i_translator osd1.hurd1.h_i_translator ++#define i_frag osd2.hurd2.h_i_frag; ++#define i_fsize osd2.hurd2.h_i_fsize; ++#define i_uid_high osd2.hurd2.h_i_uid_high ++#define i_gid_high osd2.hurd2.h_i_gid_high ++#define i_author osd2.hurd2.h_i_author ++ ++#endif /* __GNU__ */ ++#endif /* defined(__KERNEL__) || defined(__linux__) */ ++ ++#define inode_uid(inode) ((inode).i_uid | (inode).osd2.linux2.l_i_uid_high << 16) ++#define inode_gid(inode) ((inode).i_gid | (inode).osd2.linux2.l_i_gid_high << 16) ++#define ext2fs_set_i_uid_high(inode,x) ((inode).osd2.linux2.l_i_uid_high = (x)) ++#define ext2fs_set_i_gid_high(inode,x) ((inode).osd2.linux2.l_i_gid_high = (x)) ++ ++/* ++ * File system states ++ */ ++#define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */ ++#define EXT2_ERROR_FS 0x0002 /* Errors detected */ ++#define EXT3_ORPHAN_FS 0x0004 /* Orphans being recovered */ ++ ++/* ++ * Misc. filesystem flags ++ */ ++#define EXT2_FLAGS_SIGNED_HASH 0x0001 /* Signed dirhash in use */ ++#define EXT2_FLAGS_UNSIGNED_HASH 0x0002 /* Unsigned dirhash in use */ ++#define EXT2_FLAGS_TEST_FILESYS 0x0004 /* OK for use on development code */ ++#define EXT2_FLAGS_IS_SNAPSHOT 0x0010 /* This is a snapshot image */ ++#define EXT2_FLAGS_FIX_SNAPSHOT 0x0020 /* Snapshot inodes corrupted */ ++#define EXT2_FLAGS_FIX_EXCLUDE 0x0040 /* Exclude bitmaps corrupted */ ++ ++/* ++ * Mount flags ++ */ ++#define EXT2_MOUNT_CHECK 0x0001 /* Do mount-time checks */ ++#define EXT2_MOUNT_GRPID 0x0004 /* Create files with directory's group */ ++#define EXT2_MOUNT_DEBUG 0x0008 /* Some debugging messages */ ++#define EXT2_MOUNT_ERRORS_CONT 0x0010 /* Continue on errors */ ++#define EXT2_MOUNT_ERRORS_RO 0x0020 /* Remount fs ro on errors */ ++#define EXT2_MOUNT_ERRORS_PANIC 0x0040 /* Panic on errors */ ++#define EXT2_MOUNT_MINIX_DF 0x0080 /* Mimics the Minix statfs */ ++#define EXT2_MOUNT_NO_UID32 0x0200 /* Disable 32-bit UIDs */ ++ ++#define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt ++#define set_opt(o, opt) o |= EXT2_MOUNT_##opt ++#define test_opt(sb, opt) (EXT2_SB(sb)->s_mount_opt & \ ++ EXT2_MOUNT_##opt) ++/* ++ * Maximal mount counts between two filesystem checks ++ */ ++#define EXT2_DFL_MAX_MNT_COUNT 20 /* Allow 20 mounts */ ++#define EXT2_DFL_CHECKINTERVAL 0 /* Don't use interval check */ ++ ++/* ++ * Behaviour when detecting errors ++ */ ++#define EXT2_ERRORS_CONTINUE 1 /* Continue execution */ ++#define EXT2_ERRORS_RO 2 /* Remount fs read-only */ ++#define EXT2_ERRORS_PANIC 3 /* Panic */ ++#define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE ++ ++#if (__GNUC__ >= 4) ++#define ext4_offsetof(TYPE,MEMBER) __builtin_offsetof(TYPE,MEMBER) ++#else ++#define ext4_offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ++#endif ++ ++/* ++ * Structure of the super block ++ */ ++struct ext2_super_block { ++ __u32 s_inodes_count; /* Inodes count */ ++ __u32 s_blocks_count; /* Blocks count */ ++ __u32 s_r_blocks_count; /* Reserved blocks count */ ++ __u32 s_free_blocks_count; /* Free blocks count */ ++ __u32 s_free_inodes_count; /* Free inodes count */ ++ __u32 s_first_data_block; /* First Data Block */ ++ __u32 s_log_block_size; /* Block size */ ++ __u32 s_log_cluster_size; /* Allocation cluster size */ ++ __u32 s_blocks_per_group; /* # Blocks per group */ ++ __u32 s_clusters_per_group; /* # Fragments per group */ ++ __u32 s_inodes_per_group; /* # Inodes per group */ ++ __u32 s_mtime; /* Mount time */ ++ __u32 s_wtime; /* Write time */ ++ __u16 s_mnt_count; /* Mount count */ ++ __s16 s_max_mnt_count; /* Maximal mount count */ ++ __u16 s_magic; /* Magic signature */ ++ __u16 s_state; /* File system state */ ++ __u16 s_errors; /* Behaviour when detecting errors */ ++ __u16 s_minor_rev_level; /* minor revision level */ ++ __u32 s_lastcheck; /* time of last check */ ++ __u32 s_checkinterval; /* max. time between checks */ ++ __u32 s_creator_os; /* OS */ ++ __u32 s_rev_level; /* Revision level */ ++ __u16 s_def_resuid; /* Default uid for reserved blocks */ ++ __u16 s_def_resgid; /* Default gid for reserved blocks */ ++ /* ++ * These fields are for EXT2_DYNAMIC_REV superblocks only. ++ * ++ * Note: the difference between the compatible feature set and ++ * the incompatible feature set is that if there is a bit set ++ * in the incompatible feature set that the kernel doesn't ++ * know about, it should refuse to mount the filesystem. ++ * ++ * e2fsck's requirements are more strict; if it doesn't know ++ * about a feature in either the compatible or incompatible ++ * feature set, it must abort and not try to meddle with ++ * things it doesn't understand... ++ */ ++ __u32 s_first_ino; /* First non-reserved inode */ ++ __u16 s_inode_size; /* size of inode structure */ ++ __u16 s_block_group_nr; /* block group # of this superblock */ ++ __u32 s_feature_compat; /* compatible feature set */ ++ __u32 s_feature_incompat; /* incompatible feature set */ ++ __u32 s_feature_ro_compat; /* readonly-compatible feature set */ ++ __u8 s_uuid[16]; /* 128-bit uuid for volume */ ++ char s_volume_name[16]; /* volume name */ ++ char s_last_mounted[64]; /* directory where last mounted */ ++ __u32 s_algorithm_usage_bitmap; /* For compression */ ++ /* ++ * Performance hints. Directory preallocation should only ++ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. ++ */ ++ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ ++ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ ++ __u16 s_reserved_gdt_blocks; /* Per group table for online growth */ ++ /* ++ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. ++ */ ++ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ ++ __u32 s_journal_inum; /* inode number of journal file */ ++ __u32 s_journal_dev; /* device number of journal file */ ++ __u32 s_last_orphan; /* start of list of inodes to delete */ ++ __u32 s_hash_seed[4]; /* HTREE hash seed */ ++ __u8 s_def_hash_version; /* Default hash version to use */ ++ __u8 s_jnl_backup_type; /* Default type of journal backup */ ++ __u16 s_desc_size; /* Group desc. size: INCOMPAT_64BIT */ ++ __u32 s_default_mount_opts; ++ __u32 s_first_meta_bg; /* First metablock group */ ++ __u32 s_mkfs_time; /* When the filesystem was created */ ++ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ ++ __u32 s_blocks_count_hi; /* Blocks count high 32bits */ ++ __u32 s_r_blocks_count_hi; /* Reserved blocks count high 32 bits*/ ++ __u32 s_free_blocks_hi; /* Free blocks count */ ++ __u16 s_min_extra_isize; /* All inodes have at least # bytes */ ++ __u16 s_want_extra_isize; /* New inodes should reserve # bytes */ ++ __u32 s_flags; /* Miscellaneous flags */ ++ __u16 s_raid_stride; /* RAID stride */ ++ __u16 s_mmp_update_interval; /* # seconds to wait in MMP checking */ ++ __u64 s_mmp_block; /* Block for multi-mount protection */ ++ __u32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ ++ __u8 s_log_groups_per_flex; /* FLEX_BG group size */ ++ __u8 s_reserved_char_pad; ++ __u16 s_reserved_pad; /* Padding to next 32bits */ ++ __u64 s_kbytes_written; /* nr of lifetime kilobytes written */ ++ __u32 s_snapshot_inum; /* Inode number of active snapshot */ ++ __u32 s_snapshot_id; /* sequential ID of active snapshot */ ++ __u64 s_snapshot_r_blocks_count; /* reserved blocks for active ++ snapshot's future use */ ++ __u32 s_snapshot_list; /* inode number of the head of the on-disk snapshot list */ ++#define EXT4_S_ERR_START ext4_offsetof(struct ext2_super_block, s_error_count) ++ __u32 s_error_count; /* number of fs errors */ ++ __u32 s_first_error_time; /* first time an error happened */ ++ __u32 s_first_error_ino; /* inode involved in first error */ ++ __u64 s_first_error_block; /* block involved of first error */ ++ __u8 s_first_error_func[32]; /* function where the error happened */ ++ __u32 s_first_error_line; /* line number where error happened */ ++ __u32 s_last_error_time; /* most recent time of an error */ ++ __u32 s_last_error_ino; /* inode involved in last error */ ++ __u32 s_last_error_line; /* line number where error happened */ ++ __u64 s_last_error_block; /* block involved of last error */ ++ __u8 s_last_error_func[32]; /* function where the error happened */ ++#define EXT4_S_ERR_END ext4_offsetof(struct ext2_super_block, s_mount_opts) ++ __u8 s_mount_opts[64]; ++ __u32 s_usr_quota_inum; /* inode number of user quota file */ ++ __u32 s_grp_quota_inum; /* inode number of group quota file */ ++ __u32 s_overhead_blocks; /* overhead blocks/clusters in fs */ ++ __u32 s_reserved[108]; /* Padding to the end of the block */ ++ __u32 s_checksum; /* crc32c(superblock) */ ++}; ++ ++#define EXT4_S_ERR_LEN (EXT4_S_ERR_END - EXT4_S_ERR_START) ++ ++/* ++ * Codes for operating systems ++ */ ++#define EXT2_OS_LINUX 0 ++#define EXT2_OS_HURD 1 ++#define EXT2_OBSO_OS_MASIX 2 ++#define EXT2_OS_FREEBSD 3 ++#define EXT2_OS_LITES 4 ++ ++/* ++ * Revision levels ++ */ ++#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ ++#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ ++ ++#define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV ++#define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV ++ ++#define EXT2_GOOD_OLD_INODE_SIZE 128 ++ ++/* ++ * Journal inode backup types ++ */ ++#define EXT3_JNL_BACKUP_BLOCKS 1 ++ ++/* ++ * Feature set definitions ++ */ ++ ++#define EXT2_HAS_COMPAT_FEATURE(sb,mask) \ ++ ( EXT2_SB(sb)->s_feature_compat & (mask) ) ++#define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask) \ ++ ( EXT2_SB(sb)->s_feature_ro_compat & (mask) ) ++#define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \ ++ ( EXT2_SB(sb)->s_feature_incompat & (mask) ) ++ ++#define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 ++#define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 ++#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 ++#define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008 ++#define EXT2_FEATURE_COMPAT_RESIZE_INODE 0x0010 ++#define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 ++#define EXT2_FEATURE_COMPAT_LAZY_BG 0x0040 ++/* #define EXT2_FEATURE_COMPAT_EXCLUDE_INODE 0x0080 not used, legacy */ ++#define EXT2_FEATURE_COMPAT_EXCLUDE_BITMAP 0x0100 ++ ++ ++#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 ++#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 ++/* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */ ++#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 ++#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 ++#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 ++#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 ++#define EXT4_FEATURE_RO_COMPAT_HAS_SNAPSHOT 0x0080 ++#define EXT4_FEATURE_RO_COMPAT_QUOTA 0x0100 ++#define EXT4_FEATURE_RO_COMPAT_BIGALLOC 0x0200 ++#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400 ++#define EXT4_FEATURE_RO_COMPAT_REPLICA 0x0800 ++ ++#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 ++#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 ++#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ ++#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ ++#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 ++#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 ++#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 ++#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 ++#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 ++#define EXT4_FEATURE_INCOMPAT_EA_INODE 0x0400 ++#define EXT4_FEATURE_INCOMPAT_DIRDATA 0x1000 ++ ++#define EXT2_FEATURE_COMPAT_SUPP 0 ++#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ ++ EXT4_FEATURE_INCOMPAT_MMP) ++#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ ++ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ ++ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \ ++ EXT2_FEATURE_RO_COMPAT_BTREE_DIR) ++ ++/* ++ * Default values for user and/or group using reserved blocks ++ */ ++#define EXT2_DEF_RESUID 0 ++#define EXT2_DEF_RESGID 0 ++ ++/* ++ * Default mount options ++ */ ++#define EXT2_DEFM_DEBUG 0x0001 ++#define EXT2_DEFM_BSDGROUPS 0x0002 ++#define EXT2_DEFM_XATTR_USER 0x0004 ++#define EXT2_DEFM_ACL 0x0008 ++#define EXT2_DEFM_UID16 0x0010 ++#define EXT3_DEFM_JMODE 0x0060 ++#define EXT3_DEFM_JMODE_DATA 0x0020 ++#define EXT3_DEFM_JMODE_ORDERED 0x0040 ++#define EXT3_DEFM_JMODE_WBACK 0x0060 ++#define EXT4_DEFM_NOBARRIER 0x0100 ++#define EXT4_DEFM_BLOCK_VALIDITY 0x0200 ++#define EXT4_DEFM_DISCARD 0x0400 ++#define EXT4_DEFM_NODELALLOC 0x0800 ++ ++/* ++ * Structure of a directory entry ++ */ ++#define EXT2_NAME_LEN 255 ++ ++struct ext2_dir_entry { ++ __u32 inode; /* Inode number */ ++ __u16 rec_len; /* Directory entry length */ ++ __u16 name_len; /* Name length */ ++ char name[EXT2_NAME_LEN]; /* File name */ ++}; ++ ++/* ++ * The new version of the directory entry. Since EXT2 structures are ++ * stored in intel byte order, and the name_len field could never be ++ * bigger than 255 chars, it's safe to reclaim the extra byte for the ++ * file_type field. ++ */ ++struct ext2_dir_entry_2 { ++ __u32 inode; /* Inode number */ ++ __u16 rec_len; /* Directory entry length */ ++ __u8 name_len; /* Name length */ ++ __u8 file_type; ++ char name[EXT2_NAME_LEN]; /* File name */ ++}; ++ ++/* ++ * Ext2 directory file types. Only the low 3 bits are used. The ++ * other bits are reserved for now. ++ */ ++#define EXT2_FT_UNKNOWN 0 ++#define EXT2_FT_REG_FILE 1 ++#define EXT2_FT_DIR 2 ++#define EXT2_FT_CHRDEV 3 ++#define EXT2_FT_BLKDEV 4 ++#define EXT2_FT_FIFO 5 ++#define EXT2_FT_SOCK 6 ++#define EXT2_FT_SYMLINK 7 ++ ++#define EXT2_FT_MAX 8 ++ ++/* ++ * EXT2_DIR_PAD defines the directory entries boundaries ++ * ++ * NOTE: It must be a multiple of 4 ++ */ ++#define EXT2_DIR_PAD 4 ++#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) ++#define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ ++ ~EXT2_DIR_ROUND) ++ ++/* ++ * This structure is used for multiple mount protection. It is written ++ * into the block number saved in the s_mmp_block field in the superblock. ++ * Programs that check MMP should assume that if SEQ_FSCK (or any unknown ++ * code above SEQ_MAX) is present then it is NOT safe to use the filesystem, ++ * regardless of how old the timestamp is. ++ * ++ * The timestamp in the MMP structure will be updated by e2fsck at some ++ * arbitary intervals (start of passes, after every few groups of inodes ++ * in pass1 and pass1b). There is no guarantee that e2fsck is updating ++ * the MMP block in a timely manner, and the updates it does are purely ++ * for the convenience of the sysadmin and not for automatic validation. ++ * ++ * Note: Only the mmp_seq value is used to determine whether the MMP block ++ * is being updated. The mmp_time, mmp_nodename, and mmp_bdevname ++ * fields are only for informational purposes for the administrator, ++ * due to clock skew between nodes and hostname HA service takeover. ++ */ ++#define EXT4_MMP_MAGIC 0x004D4D50U /* ASCII for MMP */ ++#define EXT4_MMP_SEQ_CLEAN 0xFF4D4D50U /* mmp_seq value for clean unmount */ ++#define EXT4_MMP_SEQ_FSCK 0xE24D4D50U /* mmp_seq value when being fscked */ ++#define EXT4_MMP_SEQ_MAX 0xE24D4D4FU /* maximum valid mmp_seq value */ ++ ++struct mmp_struct { ++ __u32 mmp_magic; /* Magic number for MMP */ ++ __u32 mmp_seq; /* Sequence no. updated periodically */ ++ __u64 mmp_time; /* Time last updated */ ++ char mmp_nodename[64]; /* Node which last updated MMP block */ ++ char mmp_bdevname[32]; /* Bdev which last updated MMP block */ ++ __u16 mmp_check_interval; /* Changed mmp_check_interval */ ++ __u16 mmp_pad1; ++ __u32 mmp_pad2[227]; ++}; ++ ++/* ++ * Default interval for MMP update in seconds. ++ */ ++#define EXT4_MMP_UPDATE_INTERVAL 5 ++ ++/* ++ * Maximum interval for MMP update in seconds. ++ */ ++#define EXT4_MMP_MAX_UPDATE_INTERVAL 300 ++ ++/* ++ * Minimum interval for MMP checking in seconds. ++ */ ++#define EXT4_MMP_MIN_CHECK_INTERVAL 5 ++ ++#endif /* _EXT2FS_EXT2_FS_H */ +diff -urpN syslinux-4.05/libinstaller/linuxioctl.h.ext2 syslinux-4.05/libinstaller/linuxioctl.h +--- syslinux-4.05/libinstaller/linuxioctl.h.ext2 2011-12-09 13:28:17.000000000 -0500 ++++ syslinux-4.05/libinstaller/linuxioctl.h 2012-08-06 09:52:42.653335110 -0400 +@@ -9,17 +9,33 @@ + + #include <sys/ioctl.h> + ++#ifdef __linux__ ++ + #define statfs _kernel_statfs /* HACK to deal with broken 2.4 distros */ + + #include <linux/fd.h> /* Floppy geometry */ + #include <linux/hdreg.h> /* Hard disk geometry */ + +-#include <linux/fs.h> /* FIGETBSZ, FIBMAP, FS_IOC_FIEMAP */ ++#include <linux/fs.h> /* FIGETBSZ, FIBMAP, FS_IOC_* */ + #include <linux/msdos_fs.h> /* FAT_IOCTL_SET_ATTRIBUTES */ + + #undef SECTOR_SIZE /* Defined in msdos_fs.h for no good reason */ + #undef SECTOR_BITS +-#include <linux/ext2_fs.h> /* EXT2_IOC_* */ ++ ++#ifndef FS_IOC_GETFLAGS ++/* Old kernel headers, these were once ext2-specific... */ ++# include <linux/ext2_fs.h> /* EXT2_IOC_* */ ++ ++# define FS_IOC_GETFLAGS EXT2_IOC_GETFLAGS ++# define FS_IOC_SETFLAGS EXT2_IOC_SETFLAGS ++ ++# define FS_IMMUTABLE_FL EXT2_IMMUTABLE_FL ++ ++#else ++ ++# include <ext2fs/ext2_fs.h> ++ ++#endif + + #ifndef FAT_IOCTL_GET_ATTRIBUTES + # define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32) +@@ -37,11 +53,13 @@ + + #undef statfs + +-#if defined(__linux__) && !defined(BLKGETSIZE64) ++#ifndef BLKGETSIZE64 + /* This takes a u64, but the size field says size_t. Someone screwed big. */ + # define BLKGETSIZE64 _IOR(0x12,114,size_t) + #endif + + #include <linux/loop.h> + ++#endif /* __linux__ */ ++ + #endif /* LIBINSTALLER_LINUXIOCTL_H */ +diff -urpN syslinux-4.05/libinstaller/syslxcom.c.ext2 syslinux-4.05/libinstaller/syslxcom.c +--- syslinux-4.05/libinstaller/syslxcom.c.ext2 2011-12-09 13:28:17.000000000 -0500 ++++ syslinux-4.05/libinstaller/syslxcom.c 2012-08-06 09:48:43.797645032 -0400 +@@ -121,9 +121,9 @@ void clear_attributes(int fd) + { + int flags; + +- if (!ioctl(fd, EXT2_IOC_GETFLAGS, &flags)) { +- flags &= ~EXT2_IMMUTABLE_FL; +- ioctl(fd, EXT2_IOC_SETFLAGS, &flags); ++ if (!ioctl(fd, FS_IOC_GETFLAGS, &flags)) { ++ flags &= ~FS_IMMUTABLE_FL; ++ ioctl(fd, FS_IOC_SETFLAGS, &flags); + } + break; + } +@@ -151,9 +151,9 @@ void set_attributes(int fd) + { + int flags; + +- if (st.st_uid == 0 && !ioctl(fd, EXT2_IOC_GETFLAGS, &flags)) { +- flags |= EXT2_IMMUTABLE_FL; +- ioctl(fd, EXT2_IOC_SETFLAGS, &flags); ++ if (st.st_uid == 0 && !ioctl(fd, FS_IOC_GETFLAGS, &flags)) { ++ flags |= FS_IMMUTABLE_FL; ++ ioctl(fd, FS_IOC_SETFLAGS, &flags); + } + break; + } diff --git a/libre/syslinux/rePKGBUILD b/libre/syslinux/rePKGBUILD index a8eb152d5..85ab6074e 100644 --- a/libre/syslinux/rePKGBUILD +++ b/libre/syslinux/rePKGBUILD @@ -3,23 +3,23 @@ # NOTE: Please fill out the license field for your package! If it is unknown, # then please put 'unknown'. -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> source PKGBUILD unset build package md5sums source check _repo=core pkgname='syslinux' options=(!strip) source=(PKGBUILD -# http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} - http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-4-${CARCH}${PKGEXT} + http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} +# http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-4-${CARCH}${PKGEXT} # files for pkg modifications syslinux.cfg splash.png) build() { cd "${srcdir}/" -# rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-$pkgrel-$CARCH$PKGEXT || true - rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-4-$CARCH$PKGEXT || true + rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-$pkgrel-$CARCH$PKGEXT || true +# rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-4-$CARCH$PKGEXT || true # put actions for package modifications below this line rm -v boot/syslinux/syslinux.cfg @@ -33,7 +33,7 @@ package_syslinux() { optdepends=('perl-passwd-md5: For md5pass' 'perl-digest-sha1: For sha1pass' 'mtools: For mkdiskimage and syslinux support' - ) + 'gptfdisk: For GPT support') # Install the default configuration install -D -m644 "$srcdir"/syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg # Install Parabola splash diff --git a/libre/virtualbox-libre-modules-lts/PKGBUILD b/libre/virtualbox-libre-modules-lts/PKGBUILD index 3de090703..588f72271 100644 --- a/libre/virtualbox-libre-modules-lts/PKGBUILD +++ b/libre/virtualbox-libre-modules-lts/PKGBUILD @@ -7,7 +7,7 @@ pkgbase=virtualbox-libre-modules-lts pkgname=('virtualbox-libre-modules-lts' 'virtualbox-libre-parabola-modules-lts') pkgver=4.1.18 -pkgrel=4 +pkgrel=4.1 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL') @@ -107,7 +107,7 @@ package_virtualbox-libre-parabola-modules-lts(){ depends=('linux-libre-lts>=3.0' 'linux-libre-lts<3.1') replaces=('virtualbox-archlinux-modules-lts') conflicts=('virtualbox-archlinux-modules-lts') - provides=("virtualbox-archlinux-modules-lts=$pkgver" "virtualbox-archlinux-modules=$pkgver") + provides=("virtualbox-archlinux-modules-lts=$pkgver" 'virtualbox-archlinux-modules') source "$srcdir/VirtualBox-${pkgver}/env.sh" @@ -131,7 +131,7 @@ package_virtualbox-libre-modules-lts(){ depends=('linux-libre-lts>=3.0' 'linux-libre-lts<3.1') replaces=('virtualbox-modules-lts') conflicts=('virtualbox-modules-lts') - provides=("virtualbox-modules-lts=$pkgver" "virtualbox-modules=$pkgver") + provides=("virtualbox-modules-lts=$pkgver" 'virtualbox-modules') source "$srcdir/VirtualBox-${pkgver}/env.sh" diff --git a/libre/virtualbox-libre/.directory b/libre/virtualbox-libre/.directory index 0de6ba6b0..502696f2f 100644 --- a/libre/virtualbox-libre/.directory +++ b/libre/virtualbox-libre/.directory @@ -1,3 +1,4 @@ [Dolphin] -Timestamp=2012,7,26,5,49,47 +Timestamp=2012,8,8,14,52,43 +Version=3 ViewMode=2 diff --git a/libre/virtualbox-libre/PKGBUILD b/libre/virtualbox-libre/PKGBUILD index c3aa1a69c..80de2315f 100644 --- a/libre/virtualbox-libre/PKGBUILD +++ b/libre/virtualbox-libre/PKGBUILD @@ -1,9 +1,9 @@ # $Id$ +# Maintainer: Ionut Biru <ibiru@archlinux.org> # Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar> # Maintainer (Parabola): Jorge López <jorginho@lavabit.com> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> -# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> -# Maintainer: Ionut Biru <ibiru@archlinux.org> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> pkgbase=virtualbox-libre pkgname=('virtualbox-libre' 'virtualbox-libre-parabola-additions' @@ -11,7 +11,7 @@ pkgname=('virtualbox-libre' 'virtualbox-libre-source' 'virtualbox-libre-parabola-source') pkgver=4.1.18 -pkgrel=4.2 +pkgrel=5 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL' 'custom') @@ -33,7 +33,7 @@ _extramodules=extramodules-3.5-LIBRE _kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true build() { - cd "$srcdir/VirtualBox-${pkgver}" + cd "VirtualBox-$pkgver" patch -Np1 -i "$srcdir/vboxdrv-reference.patch" patch -Np1 -i "$srcdir/change_default_driver_dir.patch" @@ -72,6 +72,10 @@ build() { source ./env.sh kmk all sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "out/linux.$BUILD_PLATFORM_ARCH/release/bin/vboxshell.py" + # build rdesktop-vrdp (broken from LocalConfig.kmk) + cd src/VBox/RDP/client + cp "$srcdir/LocalConfig.kmk" . + kmk all } package_virtualbox-libre() { @@ -83,25 +87,26 @@ package_virtualbox-libre() { 'virtualbox-libre-source: host kernel source modules for non-stock kernels' 'net-tools: for host-only or bridged networking') - backup=('etc/vbox/vbox.cfg') + backup=('etc/vbox/vbox.cfg' 'etc/conf.d/vboxweb') replaces=('virtualbox' 'virtualbox-ose') conflicts=('virtualbox' 'virtualbox-ose') provides=("virtualbox=$pkgver") install=virtualbox-libre.install - source "$srcdir/VirtualBox-${pkgver}/env.sh" - - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" - install -dm755 "$pkgdir"/usr/{bin,lib/virtualbox/components,share/virtualbox/nls} + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin" + install -dm755 "$pkgdir"/usr/{bin,lib/virtualbox/components,share/virtualbox/nls,share/virtualbox/rdesktop-vrdp-keymaps} #Binaries and Wrapper with Launchers install -m 0755 VBox.sh "$pkgdir/usr/bin/VBox" - for i in VBoxHeadless vboxheadless VBoxManage vboxmanage VBoxSDL vboxsdl VirtualBox virtualbox vboxwebsrv VBoxBalloonCtrl vboxballoonctrl; do + for i in VBoxHeadless VBoxManage VBoxSDL VirtualBox vboxwebsrv VBoxBalloonCtrl; do ln -sf VBox "$pkgdir/usr/bin/$i" + ln -sf VBox "$pkgdir/usr/bin/${i,,}" done install -m 0755 VBoxTunctl "$pkgdir/usr/bin" + install -m 0755 rdesktop-vrdp "$pkgdir/usr/bin" #components install -m 0755 components/* -t "$pkgdir/usr/lib/virtualbox/components" @@ -118,6 +123,9 @@ package_virtualbox-libre() { #language install -m 0755 nls/*.qm -t "$pkgdir/usr/share/virtualbox/nls" + #rdesktop keymaps + install -m 0644 rdesktop-vrdp-keymaps/* "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps" + #useless scripts install -m 0755 VBoxCreateUSBNode.sh VBoxSysInfo.sh -t "$pkgdir/usr/share/virtualbox" @@ -160,14 +168,14 @@ package_virtualbox-libre-source() { depends=(dkms gcc make) replaces=('virtualbox-source') conflicts=('virtualbox-source') - provides=("virtualbox-source=$pkgver" "virtualbox-modules=$pkgver") + provides=("virtualbox-source=$pkgver" 'virtualbox-modules') optdepends=('linux-libre-headers' 'linux-libre-lts-headers') install=virtualbox-libre-source.install install -dm755 "$pkgdir/var/lib/dkms/vboxhost/$pkgver" - source "$srcdir/VirtualBox-${pkgver}/env.sh" - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin" cp -r src "$pkgdir/var/lib/dkms/vboxhost/$pkgver/source" } @@ -180,8 +188,8 @@ package_virtualbox-libre-sdk() { install -dm755 "$pkgdir/usr/lib/virtualbox" - source "$srcdir/VirtualBox-${pkgver}/env.sh" - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin" install -D -m 0755 vboxshell.py "$pkgdir/usr/lib/virtualbox/vboxshell.py" #python sdk @@ -201,17 +209,17 @@ package_virtualbox-libre-parabola-additions(){ backup=('etc/conf.d/vboxservice') install=virtualbox-libre-parabola-additions.install - source "$srcdir/VirtualBox-${pkgver}/env.sh" + source "VirtualBox-$pkgver/env.sh" - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" install -d "$pkgdir"/{usr/bin,sbin} install -m755 VBoxClient VBoxControl VBoxService "$pkgdir/usr/bin" install -m755 mount.vboxsf "$pkgdir/sbin" - install -m755 -D "$srcdir"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \ + install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/98vboxadd-xclient \ "$pkgdir"/usr/bin/VBoxClient-all - install -m755 -D "$srcdir"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/vboxclient.desktop \ + install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/vboxclient.desktop \ "$pkgdir"/etc/xdg/autostart/vboxclient.desktop install -D vboxvideo_drv_112.so \ "$pkgdir/usr/lib/xorg/modules/drivers/vboxvideo.so" @@ -236,14 +244,14 @@ package_virtualbox-libre-parabola-source() { depends=(dkms gcc make) replaces=('virtualbox-archlinux-source') conflicts=('virtualbox-archlinux-source') - provides=("virtualbox-archlinux-source=${pkgver}" "virtualbox-archlinux-modules=${pkgver}") + provides=("virtualbox-archlinux-source=${pkgver}" 'virtualbox-archlinux-modules') optdepends=('linux-libre-headers' 'linux-libre-lts-headers') install=virtualbox-libre-parabola-source.install install -dm755 "$pkgdir/var/lib/dkms/vboxguest/$pkgver" - source "$srcdir/VirtualBox-${pkgver}/env.sh" - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" cp -r src "$pkgdir/var/lib/dkms/vboxguest/$pkgver/source" } @@ -256,7 +264,7 @@ md5sums=('38db0a87cba659b484af868b0c2bd3ac' '3c08ad30b89add47d3f45121200a5360' '7d9823507206de9b8528a72af2f18d74' '07c5f6d86c4b7839d719c8ee0c53653b' - '3ac185709bfe688bb753c46e170d0546' + '7e9483b1069a54f181546083ac7e5469' 'c159d683ba1947290fc2ad2c64194150' 'bc9efed88e0469cd7fc460d5a5cd7b4b' '8538dba8686d7449cb481c9bae9d722a' diff --git a/libre/virtualbox-libre/vboxweb.conf b/libre/virtualbox-libre/vboxweb.conf index 49d82d828..c36f6a143 100644 --- a/libre/virtualbox-libre/vboxweb.conf +++ b/libre/virtualbox-libre/vboxweb.conf @@ -3,9 +3,9 @@ # WebService Variables #VBOXWEB_LOGFILE= -#$VBOXWEB_HOST= -#$VBOXWEB_PORT= -#$VBOXWEB_TIMEOUT= -#$VBOXWEB_CHECK_INTERVAL= -#$VBOXWEB_THREADS= -#$VBOXWEB_KEEPALIVE= +#VBOXWEB_HOST= +#VBOXWEB_PORT= +#VBOXWEB_TIMEOUT= +#VBOXWEB_CHECK_INTERVAL= +#VBOXWEB_THREADS= +#VBOXWEB_KEEPALIVE= diff --git a/testing/net-tools/Makefile.patch b/testing/net-tools/Makefile.patch new file mode 100644 index 000000000..aaacd6b78 --- /dev/null +++ b/testing/net-tools/Makefile.patch @@ -0,0 +1,17 @@ +--- Makefile.old 2012-08-07 22:07:58.235437087 +0200 ++++ Makefile 2012-08-07 22:10:21.192104345 +0200 +@@ -239,12 +239,12 @@ + install -m 0755 -d ${BASEDIR}/bin + install -m 0755 arp ${BASEDIR}/sbin + install -m 0755 hostname ${BASEDIR}/bin +- install -m 0755 ifconfig ${BASEDIR}/bin ++ install -m 0755 ifconfig ${BASEDIR}/sbin + install -m 0755 nameif ${BASEDIR}/sbin + install -m 0755 netstat ${BASEDIR}/bin + install -m 0755 plipconfig $(BASEDIR)/sbin + install -m 0755 rarp ${BASEDIR}/sbin +- install -m 0755 route ${BASEDIR}/bin ++ install -m 0755 route ${BASEDIR}/sbin + install -m 0755 slattach $(BASEDIR)/sbin + ifeq ($(HAVE_IP_TOOLS),1) + install -m 0755 ipmaddr $(BASEDIR)/sbin diff --git a/testing/net-tools/PKGBUILD b/testing/net-tools/PKGBUILD index 9468ff936..fec4a9806 100644 --- a/testing/net-tools/PKGBUILD +++ b/testing/net-tools/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 164775 2012-08-04 20:55:03Z ronald $ +# $Id: PKGBUILD 164985 2012-08-07 20:09:18Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgname=net-tools pkgver=1.60.20120804git -pkgrel=1 +pkgrel=2 pkgdesc="Configuration tools for Linux networking" arch=(i686 x86_64) license=('GPL2') @@ -13,19 +13,21 @@ depends=('glibc') # http://www.tazenda.demon.co.uk/phil/$pkgname/$pkgname-$pkgver.tar.bz2 # use git checkout instead -source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz) +source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz + Makefile.patch) options=(!makeflags) install=net-tools.install -sha1sums=('a3341086cb403a8d747b783693f72ee2dfd72d82') - +sha1sums=('a3341086cb403a8d747b783693f72ee2dfd72d82' + '4191ca56dc01d6aebe26c36c7cc060c638d5ebca') build() { - cd $srcdir/$pkgname-$pkgver + cd ${srcdir}/${pkgname}-${pkgver} + patch -Np0 -i ${srcdir}/Makefile.patch yes "" | make } package() { - cd $srcdir/$pkgname-$pkgver - make BASEDIR=$pkgdir update + cd ${srcdir}/${pkgname}-${pkgver} + make BASEDIR=${pkgdir} update # the following is provided by yp-tools rm "${pkgdir}"/bin/{nis,yp}domainname diff --git a/testing/network-manager-applet/PKGBUILD b/testing/network-manager-applet/PKGBUILD new file mode 100644 index 000000000..10b025755 --- /dev/null +++ b/testing/network-manager-applet/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 164979 2012-08-07 18:12:21Z heftig $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Arjan Timmerman <arjan@archlinux.org> +# Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org> +# Contributor: Tor Krill <tor@krill.nu> +# Contributor: Will Rea <sillywilly@gmail.com> + +pkgname=network-manager-applet +pkgver=0.9.6.0 +pkgrel=1 +pkgdesc="GNOME frontends to NetWorkmanager" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org/projects/NetworkManager/" +depends=('networkmanager' 'libgnome-keyring' 'polkit-gnome' 'gtk3' 'libnotify' 'gnome-icon-theme' + 'mobile-broadband-provider-info' 'iso-codes') +makedepends=('intltool' 'gnome-bluetooth') +optdepends=('gnome-bluetooth: for PAN/DUN support') +options=('!libtool' '!emptydirs') +install=network-manager-applet.install +source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/0.9/$pkgname-$pkgver.tar.xz) +sha256sums=('7bdcf9d28f2823d9514974977df618c83e79c581db57df718885735ba10144d5') + +build() { + cd ${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var \ + --libexecdir=/usr/lib/networkmanager \ + --disable-static \ + --disable-maintainer-mode \ + --disable-migration + make +} + +package() { + cd ${pkgname}-${pkgver} + make DESTDIR="${pkgdir}" install +} diff --git a/testing/network-manager-applet/network-manager-applet.install b/testing/network-manager-applet/network-manager-applet.install new file mode 100644 index 000000000..255ea1f9a --- /dev/null +++ b/testing/network-manager-applet/network-manager-applet.install @@ -0,0 +1,18 @@ +post_install() { + glib-compile-schemas /usr/share/glib-2.0/schemas + gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor +} + +pre_upgrade() { + if (( $(vercmp $2 0.9.6.0) < 0 )); then + gconfpkg --uninstall network-manager-applet + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/networkmanager-openconnect/PKGBUILD b/testing/networkmanager-openconnect/PKGBUILD new file mode 100644 index 000000000..0068a8f68 --- /dev/null +++ b/testing/networkmanager-openconnect/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 164975 2012-08-07 18:08:35Z heftig $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> + +pkgname=networkmanager-openconnect +pkgver=0.9.6.0 +pkgrel=1 +pkgdesc="NetworkManager VPN integration for openconnect" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org/projects/NetworkManager/" +depends=("networkmanager>=${pkgver}" 'openconnect' 'gconf' 'libgnome-keyring') +makedepends=('intltool') +optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager') +options=('!libtool') +install=$pkgname.install +source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-openconnect/0.9/NetworkManager-openconnect-${pkgver}.tar.xz) +sha256sums=('b52412537f54a27b469eebca38477de0c9c0bc8cad68c169d018668e595eb495') + +build() { + cd NetworkManager-openconnect-${pkgver} + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/networkmanager \ + --disable-static + make +} + +package() { + cd NetworkManager-openconnect-${pkgver} + make DESTDIR="${pkgdir}" install +} diff --git a/testing/networkmanager-openconnect/networkmanager-openconnect.install b/testing/networkmanager-openconnect/networkmanager-openconnect.install new file mode 100644 index 000000000..7bd4d44f9 --- /dev/null +++ b/testing/networkmanager-openconnect/networkmanager-openconnect.install @@ -0,0 +1,16 @@ +pkgname=networkmanager-openconnect + +post_install() { + getent group nm-openconnect >/dev/null 2>&1 || groupadd -g 104 nm-openconnect + getent passwd nm-openconnect > /dev/null 2>&1 || useradd -u 104 -s /sbin/nologin -d / -M -c 'NetworkManager user for OpenConnect' -g nm-openconnect nm-openconnect + passwd -l nm-openconnect > /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + getent passwd nm-openconnect >/dev/null 2>&1 && userdel nm-openconnect + getent group nm-openconnect >/dev/null 2>&1 && groupdel nm-openconnect +} diff --git a/testing/networkmanager-openvpn/PKGBUILD b/testing/networkmanager-openvpn/PKGBUILD new file mode 100644 index 000000000..16f27e614 --- /dev/null +++ b/testing/networkmanager-openvpn/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 164976 2012-08-07 18:09:27Z heftig $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> + +pkgname=networkmanager-openvpn +pkgver=0.9.6.0 +pkgrel=1 +pkgdesc="NetworkManager VPN plugin for OpenVPN" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org/projects/NetworkManager/" +depends=("networkmanager>=${pkgver}" 'openvpn' 'gtk3' 'libgnome-keyring') +makedepends=('intltool') +optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager') +install=networkmanager-openvpn.install +options=('!libtool') +source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-openvpn/0.9/NetworkManager-openvpn-${pkgver}.tar.xz) +sha256sums=('8fb88705793399574b3de2af93f87b63c0eae342d549a1c79bc59f6a1fad87a3') + +build() { + cd NetworkManager-openvpn-${pkgver} + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/networkmanager \ + --disable-static + make +} + +package() { + cd NetworkManager-openvpn-${pkgver} + make DESTDIR="${pkgdir}" install +} diff --git a/testing/networkmanager-openvpn/networkmanager-openvpn.install b/testing/networkmanager-openvpn/networkmanager-openvpn.install new file mode 100644 index 000000000..931c0517c --- /dev/null +++ b/testing/networkmanager-openvpn/networkmanager-openvpn.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} diff --git a/testing/networkmanager-pptp/PKGBUILD b/testing/networkmanager-pptp/PKGBUILD new file mode 100644 index 000000000..b4f975a2c --- /dev/null +++ b/testing/networkmanager-pptp/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 164977 2012-08-07 18:10:19Z heftig $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> + +pkgname=networkmanager-pptp +pkgver=0.9.6.0 +pkgrel=1 +pkgdesc="NetworkManager VPN plugin for pptp " +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org/projects/NetworkManager/" +depends=("networkmanager>=${pkgver}" 'pptpclient' 'gtk3' 'libgnome-keyring') +makedepends=('intltool') +optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager') +options=('!libtool') +install=networkmanager-pptp.install +source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-pptp/0.9/NetworkManager-pptp-${pkgver}.tar.xz) +sha256sums=('a84cbbf24827229e3dd3611bbde191398275c3b7ecd03913047197644f27a2b4') + +build() { + cd NetworkManager-pptp-${pkgver} + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/networkmanager \ + --disable-static + make +} + +package() { + cd NetworkManager-pptp-${pkgver} + make DESTDIR="${pkgdir}" install +} diff --git a/testing/networkmanager-pptp/networkmanager-pptp.install b/testing/networkmanager-pptp/networkmanager-pptp.install new file mode 100644 index 000000000..931c0517c --- /dev/null +++ b/testing/networkmanager-pptp/networkmanager-pptp.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} diff --git a/testing/networkmanager-vpnc/PKGBUILD b/testing/networkmanager-vpnc/PKGBUILD new file mode 100644 index 000000000..db34ef9c2 --- /dev/null +++ b/testing/networkmanager-vpnc/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 164978 2012-08-07 18:11:11Z heftig $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> + +pkgname=networkmanager-vpnc +pkgver=0.9.6.0 +pkgrel=1 +pkgdesc="NetworkManager VPN plugin for vpnc" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org/projects/NetworkManager/" +depends=("networkmanager>=${pkgver}" 'vpnc' 'hicolor-icon-theme' 'gtk3' 'libgnome-keyring') +makedepends=('intltool') +optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager') +options=('!libtool') +install=networkmanager-vpnc.install +source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-vpnc/0.9/NetworkManager-vpnc-${pkgver}.tar.xz) +sha256sums=('6c8e35862330e17ee8f4dc44b1ac47470da703e436d339c7b3e2dac7d1b148a2') + +build() { + cd NetworkManager-vpnc-${pkgver} + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/networkmanager \ + --disable-static + make +} + +package() { + cd NetworkManager-vpnc-${pkgver} + make DESTDIR="${pkgdir}" install +} diff --git a/testing/networkmanager-vpnc/networkmanager-vpnc.install b/testing/networkmanager-vpnc/networkmanager-vpnc.install new file mode 100644 index 000000000..931c0517c --- /dev/null +++ b/testing/networkmanager-vpnc/networkmanager-vpnc.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} diff --git a/testing/networkmanager/NetworkManager.conf b/testing/networkmanager/NetworkManager.conf new file mode 100644 index 000000000..c37b59680 --- /dev/null +++ b/testing/networkmanager/NetworkManager.conf @@ -0,0 +1,2 @@ +[main] +plugins=keyfile diff --git a/testing/networkmanager/PKGBUILD b/testing/networkmanager/PKGBUILD new file mode 100644 index 000000000..e4c927db3 --- /dev/null +++ b/testing/networkmanager/PKGBUILD @@ -0,0 +1,72 @@ +# $Id: PKGBUILD 164974 2012-08-07 18:07:41Z heftig $ +# Maintainer: Jan de Groot <jgc@archlinxu.org> +# Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org> +# Contributor: Tor Krill <tor@krill.nu> +# Contributor: Will Rea <sillywilly@gmail.com> +# Contributor: Valentine Sinitsyn <e_val@inbox.ru> + +pkgname=networkmanager +_pkgname=NetworkManager +pkgver=0.9.6.0 +pkgrel=1 +pkgdesc="Network Management daemon" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org/projects/$_pkgname/" +depends=('dbus-glib' 'iproute2' 'libnl' 'nss' 'polkit' 'udev' 'wpa_supplicant' 'ppp' 'dhcpcd' + 'libsoup') +makedepends=('intltool' 'dhclient' 'iptables' 'gobject-introspection') +optdepends=('modemmanager: for modem management service' + 'dhclient: alternative DHCP/DHCPv6 client' + 'iptables: Connection sharing' + 'dnsmasq: Connection sharing' + 'bluez: Bluetooth support' + 'openresolv: openresolv support') +options=('!libtool') +backup=('etc/NetworkManager/NetworkManager.conf') +install=networkmanager.install +source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:3}/$_pkgname-$pkgver.tar.xz + NetworkManager.conf disable_set_hostname.patch dnsmasq-path.patch) +sha256sums=('3982b623b7b199ac99e2ddd0840fe7d088245a49e3f680237e8baebf0cf86d07' + '44b048804c7c0b8b3b0c29b8632b6ad613c397d0a1635ec918e10c0fbcdadf21' + '25056837ea92e559f09563ed817e3e0cd9333be861b8914e45f62ceaae2e0460' + '65124505048cc8396daf0242c9f5d532fa669b4bbca305998c248ab2329490cb') + +build() { + cd $_pkgname-$pkgver + + patch -Np1 -i ../disable_set_hostname.patch + patch -Np1 -i ../dnsmasq-path.patch + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --libexecdir=/usr/lib/networkmanager \ + --with-crypto=nss \ + --with-distro=arch \ + --with-dhclient=/usr/sbin/dhclient \ + --with-dhcpcd=/sbin/dhcpcd \ + --with-iptables=/usr/sbin/iptables \ + --with-systemdsystemunitdir=/usr/lib/systemd/system \ + --with-udev-dir=/usr/lib/udev \ + --with-resolvconf=/usr/sbin/resolvconf \ + --with-session-tracking=ck \ + --disable-static \ + --enable-more-warnings=no \ + --disable-wimax + + make +} + +package() { + cd $_pkgname-$pkgver + make DESTDIR="$pkgdir" install + + install -m644 ../NetworkManager.conf "$pkgdir/etc/NetworkManager/" + + rm -r "$pkgdir/var/run" + + # Provide native service for arch-daemons generator + ln -s NetworkManager.service "$pkgdir/usr/lib/systemd/system/networkmanager.service" +} diff --git a/testing/networkmanager/disable_set_hostname.patch b/testing/networkmanager/disable_set_hostname.patch new file mode 100644 index 000000000..ee95dd0e1 --- /dev/null +++ b/testing/networkmanager/disable_set_hostname.patch @@ -0,0 +1,19 @@ +diff -Nur NetworkManager-0.9.0.orig/src/nm-policy.c NetworkManager-0.9.0/src/nm-policy.c +--- NetworkManager-0.9.0.orig/src/nm-policy.c 2011-08-23 06:41:02.099686450 +0000 ++++ NetworkManager-0.9.0/src/nm-policy.c 2011-08-23 06:43:38.227791737 +0000 +@@ -302,6 +302,7 @@ + return; + } + ++#if 0 + /* Try automatically determined hostname from the best device's IP config */ + if (!best4) + best4 = get_best_ip4_device (policy->manager, &best_req4); +@@ -356,6 +357,7 @@ + } + } + ++#endif + /* If no automatically-configured hostname, try using the hostname from + * when NM started up. + */ diff --git a/testing/networkmanager/dnsmasq-path.patch b/testing/networkmanager/dnsmasq-path.patch new file mode 100644 index 000000000..c0e713266 --- /dev/null +++ b/testing/networkmanager/dnsmasq-path.patch @@ -0,0 +1,30 @@ +diff -u -r NetworkManager-0.9.2.0/src/dns-manager/nm-dns-dnsmasq.c NetworkManager-0.9.2.0-dnsmasq/src/dns-manager/nm-dns-dnsmasq.c +--- NetworkManager-0.9.2.0/src/dns-manager/nm-dns-dnsmasq.c 2011-10-10 23:38:20.000000000 +0200 ++++ NetworkManager-0.9.2.0-dnsmasq/src/dns-manager/nm-dns-dnsmasq.c 2012-03-06 09:07:24.137460927 +0100 +@@ -52,8 +52,11 @@ + find_dnsmasq (void) + { + static const char *paths[] = { ++ "/usr/local/bin/dnsmasq", + "/usr/local/sbin/dnsmasq", ++ "/usr/bin/dnsmasq", + "/usr/sbin/dnsmasq", ++ "/bin/dnsmasq", + "/sbin/dnsmasq", + NULL + }; +diff -u -r NetworkManager-0.9.2.0/src/dnsmasq-manager/nm-dnsmasq-manager.c NetworkManager-0.9.2.0-dnsmasq/src/dnsmasq-manager/nm-dnsmasq-manager.c +--- NetworkManager-0.9.2.0/src/dnsmasq-manager/nm-dnsmasq-manager.c 2011-04-19 07:06:22.000000000 +0200 ++++ NetworkManager-0.9.2.0-dnsmasq/src/dnsmasq-manager/nm-dnsmasq-manager.c 2012-03-06 09:07:58.603851818 +0100 +@@ -170,8 +170,11 @@ + nm_find_dnsmasq (void) + { + static const char *dnsmasq_binary_paths[] = { ++ "/usr/local/bin/dnsmasq", + "/usr/local/sbin/dnsmasq", ++ "/usr/bin/dnsmasq", + "/usr/sbin/dnsmasq", ++ "/bin/dnsmasq", + "/sbin/dnsmasq", + NULL + }; diff --git a/testing/networkmanager/networkmanager.install b/testing/networkmanager/networkmanager.install new file mode 100644 index 000000000..de40c17ed --- /dev/null +++ b/testing/networkmanager/networkmanager.install @@ -0,0 +1,9 @@ +post_upgrade() { + (( $(vercmp 0.8.3 $2) > 0 )) && cat <<MSG +ATTENTION: + /etc/NetworkManager/nm-system-settings.conf has been replaced + by /etc/NetworkManager/NetworkManager.conf. Make sure you move + any custom settings to the new config file. +MSG + true +} diff --git a/testing/networkmanager/systemd-fallback.patch b/testing/networkmanager/systemd-fallback.patch new file mode 100644 index 000000000..f5acc9dc6 --- /dev/null +++ b/testing/networkmanager/systemd-fallback.patch @@ -0,0 +1,470 @@ +diff -u -Nr NetworkManager-0.9.3.995/configure.ac NetworkManager-0.9.3.995-systemd-fallback/configure.ac +--- NetworkManager-0.9.3.995/configure.ac 2012-03-02 01:05:21.000000000 +0100 ++++ NetworkManager-0.9.3.995-systemd-fallback/configure.ac 2012-03-06 16:55:58.294793902 +0100 +@@ -344,7 +344,7 @@ + case $with_session_tracking in + ck|none) ;; + systemd) +- PKG_CHECK_MODULES(SYSTEMD, [libsystemd-login]) ++ PKG_CHECK_MODULES(SYSTEMD, [libsystemd-daemon libsystemd-login]) + ;; + *) + AC_MSG_ERROR(--with-session-tracking must be one of [none, ck, systemd]) +diff -u -Nr NetworkManager-0.9.3.995/src/nm-session-monitor-systemd.c NetworkManager-0.9.3.995-systemd-fallback/src/nm-session-monitor-systemd.c +--- NetworkManager-0.9.3.995/src/nm-session-monitor-systemd.c 2012-02-27 16:57:16.000000000 +0100 ++++ NetworkManager-0.9.3.995-systemd-fallback/src/nm-session-monitor-systemd.c 2012-03-06 16:55:01.285264295 +0100 +@@ -28,6 +28,10 @@ + #include <glib/gstdio.h> + #include <systemd/sd-login.h> + #include <stdlib.h> ++#include <systemd/sd-daemon.h> ++#include <sys/stat.h> ++#include <gio/gio.h> ++#include "nm-logging.h" + + #include "nm-session-utils.h" + #include "nm-session-monitor.h" +@@ -107,10 +111,20 @@ + return source; + } + ++/********************************************************************/ ++ ++#define CKDB_PATH "/var/run/ConsoleKit/database" ++ + struct _NMSessionMonitor { + GObject parent_instance; + + GSource *sd_source; ++ ++ GKeyFile *database; ++ GFileMonitor *database_monitor; ++ time_t database_mtime; ++ GHashTable *sessions_by_uid; ++ GHashTable *sessions_by_user; + }; + + struct _NMSessionMonitorClass { +@@ -130,6 +144,215 @@ + + /* ---------------------------------------------------------------------------------------------------- */ + ++typedef struct { ++ char *user; ++ uid_t uid; ++ gboolean local; ++ gboolean active; ++} Session; ++ ++static void ++session_free (Session *s) ++{ ++ g_free (s->user); ++ memset (s, 0, sizeof (Session)); ++ g_free (s); ++} ++ ++static gboolean ++check_key (GKeyFile *keyfile, const char *group, const char *key, GError **error) ++{ ++ if (g_key_file_has_key (keyfile, group, key, error)) ++ return TRUE; ++ ++ if (!error) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_MALFORMED_DATABASE, ++ "ConsoleKit database " CKDB_PATH " group '%s' had no '%s' key", ++ group, key); ++ } ++ return FALSE; ++} ++ ++static Session * ++session_new (GKeyFile *keyfile, const char *group, GError **error) ++{ ++ GError *local = NULL; ++ Session *s; ++ const char *uname = NULL; ++ ++ s = g_new0 (Session, 1); ++ g_assert (s); ++ ++ s->uid = G_MAXUINT; /* paranoia */ ++ if (!check_key (keyfile, group, "uid", &local)) ++ goto error; ++ s->uid = (uid_t) g_key_file_get_integer (keyfile, group, "uid", &local); ++ if (local) ++ goto error; ++ ++ if (!check_key (keyfile, group, "is_active", &local)) ++ goto error; ++ s->active = g_key_file_get_boolean (keyfile, group, "is_active", &local); ++ if (local) ++ goto error; ++ ++ if (!check_key (keyfile, group, "is_local", &local)) ++ goto error; ++ s->local = g_key_file_get_boolean (keyfile, group, "is_local", &local); ++ if (local) ++ goto error; ++ ++ if (!nm_session_uid_to_user (s->uid, &uname, error)) ++ return FALSE; ++ s->user = g_strdup (uname); ++ ++ return s; ++ ++error: ++ session_free (s); ++ g_propagate_error (error, local); ++ return NULL; ++} ++ ++static void ++session_merge (Session *src, Session *dest) ++{ ++ g_return_if_fail (src != NULL); ++ g_return_if_fail (dest != NULL); ++ ++ g_warn_if_fail (g_strcmp0 (src->user, dest->user) == 0); ++ g_warn_if_fail (src->uid == dest->uid); ++ ++ dest->local = (dest->local || src->local); ++ dest->active = (dest->active || src->active); ++} ++ ++/********************************************************************/ ++ ++static void ++free_database (NMSessionMonitor *self) ++{ ++ if (self->database != NULL) { ++ g_key_file_free (self->database); ++ self->database = NULL; ++ } ++ ++ g_hash_table_remove_all (self->sessions_by_uid); ++ g_hash_table_remove_all (self->sessions_by_user); ++} ++ ++static gboolean ++reload_database (NMSessionMonitor *self, GError **error) ++{ ++ struct stat statbuf; ++ char **groups = NULL; ++ gsize len = 0, i; ++ Session *s; ++ ++ free_database (self); ++ ++ errno = 0; ++ if (stat (CKDB_PATH, &statbuf) != 0) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ errno == ENOENT ? NM_SESSION_MONITOR_ERROR_NO_DATABASE : NM_SESSION_MONITOR_ERROR_IO_ERROR, ++ "Error statting file " CKDB_PATH ": %s", ++ strerror (errno)); ++ goto error; ++ } ++ self->database_mtime = statbuf.st_mtime; ++ ++ self->database = g_key_file_new (); ++ if (!g_key_file_load_from_file (self->database, CKDB_PATH, G_KEY_FILE_NONE, error)) ++ goto error; ++ ++ groups = g_key_file_get_groups (self->database, &len); ++ if (!groups) { ++ g_set_error_literal (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_IO_ERROR, ++ "Could not load groups from " CKDB_PATH ""); ++ goto error; ++ } ++ ++ for (i = 0; i < len; i++) { ++ Session *found; ++ ++ if (!g_str_has_prefix (groups[i], "Session ")) ++ continue; ++ ++ s = session_new (self->database, groups[i], error); ++ if (!s) ++ goto error; ++ ++ found = g_hash_table_lookup (self->sessions_by_user, (gpointer) s->user); ++ if (found) { ++ session_merge (s, found); ++ session_free (s); ++ } else { ++ /* Entirely new user */ ++ g_hash_table_insert (self->sessions_by_user, (gpointer) s->user, s); ++ g_hash_table_insert (self->sessions_by_uid, GUINT_TO_POINTER (s->uid), s); ++ } ++ } ++ ++ g_strfreev (groups); ++ return TRUE; ++ ++error: ++ if (groups) ++ g_strfreev (groups); ++ free_database (self); ++ return FALSE; ++} ++ ++static gboolean ++ensure_database (NMSessionMonitor *self, GError **error) ++{ ++ gboolean ret = FALSE; ++ ++ if (self->database != NULL) { ++ struct stat statbuf; ++ ++ errno = 0; ++ if (stat (CKDB_PATH, &statbuf) != 0) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ errno == ENOENT ? NM_SESSION_MONITOR_ERROR_NO_DATABASE : NM_SESSION_MONITOR_ERROR_IO_ERROR, ++ "Error statting file " CKDB_PATH " to check timestamp: %s", ++ strerror (errno)); ++ goto out; ++ } ++ ++ if (statbuf.st_mtime == self->database_mtime) { ++ ret = TRUE; ++ goto out; ++ } ++ } ++ ++ ret = reload_database (self, error); ++ ++out: ++ return ret; ++} ++ ++static void ++on_file_monitor_changed (GFileMonitor * file_monitor, ++ GFile * file, ++ GFile * other_file, ++ GFileMonitorEvent event_type, ++ gpointer user_data) ++{ ++ NMSessionMonitor *self = NM_SESSION_MONITOR (user_data); ++ ++ /* throw away cache */ ++ free_database (self); ++ ++ g_signal_emit (self, signals[CHANGED_SIGNAL], 0); ++} ++ + static gboolean + sessions_changed (gpointer user_data) + { +@@ -143,9 +366,50 @@ + static void + nm_session_monitor_init (NMSessionMonitor *monitor) + { +- monitor->sd_source = sd_source_new (); +- g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL); +- g_source_attach (monitor->sd_source, NULL); ++ if (sd_booted () > 0) { ++ monitor->sd_source = sd_source_new (); ++ g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL); ++ g_source_attach (monitor->sd_source, NULL); ++ ++ monitor->database_monitor = NULL; ++ monitor->database = NULL; ++ } else { ++ monitor->sd_source = NULL; ++ ++ GError *error = NULL; ++ GFile *file; ++ ++ /* Sessions-by-user is responsible for destroying the Session objects */ ++ monitor->sessions_by_user = g_hash_table_new_full (g_str_hash, g_str_equal, ++ NULL, (GDestroyNotify) session_free); ++ monitor->sessions_by_uid = g_hash_table_new (g_direct_hash, g_direct_equal); ++ ++ ++ error = NULL; ++ if (!ensure_database (monitor, &error)) { ++ /* Ignore the first error if the CK database isn't found yet */ ++ if (g_error_matches (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_NO_DATABASE) == FALSE) { ++ nm_log_err (LOGD_CORE, "Error loading " CKDB_PATH ": %s", error->message); ++ } ++ g_error_free (error); ++ } ++ ++ error = NULL; ++ file = g_file_new_for_path (CKDB_PATH); ++ monitor->database_monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &error); ++ g_object_unref (file); ++ if (monitor->database_monitor == NULL) { ++ nm_log_err (LOGD_CORE, "Error monitoring " CKDB_PATH ": %s", error->message); ++ g_error_free (error); ++ } else { ++ g_signal_connect (monitor->database_monitor, ++ "changed", ++ G_CALLBACK (on_file_monitor_changed), ++ monitor); ++ } ++ } + } + + static void +@@ -158,6 +422,12 @@ + g_source_unref (monitor->sd_source); + } + ++ if (monitor->database_monitor != NULL) ++ g_object_unref (monitor->database_monitor); ++ ++ if (monitor->database != NULL) ++ free_database (monitor); ++ + if (G_OBJECT_CLASS (nm_session_monitor_parent_class)->finalize != NULL) + G_OBJECT_CLASS (nm_session_monitor_parent_class)->finalize (object); + } +@@ -206,15 +476,36 @@ + uid_t *out_uid, + GError **error) + { +- uid_t uid; ++ if (monitor->sd_source != NULL) { ++ uid_t uid; + +- if (!nm_session_user_to_uid (username, &uid, error)) +- return FALSE; ++ if (!nm_session_user_to_uid (username, &uid, error)) ++ return FALSE; + +- if (out_uid) +- *out_uid = uid; ++ if (out_uid) ++ *out_uid = uid; + +- return nm_session_monitor_uid_has_session (monitor, uid, NULL, error); ++ return nm_session_monitor_uid_has_session (monitor, uid, NULL, error); ++ } else { ++ Session *s; ++ ++ if (!ensure_database (monitor, error)) ++ return FALSE; ++ ++ s = g_hash_table_lookup (monitor->sessions_by_user, (gpointer) username); ++ if (!s) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, ++ "No session found for user '%s'", ++ username); ++ return FALSE; ++ } ++ ++ if (out_uid) ++ *out_uid = s->uid; ++ return TRUE; ++ } + } + + gboolean +@@ -222,12 +513,31 @@ + const char *username, + GError **error) + { +- uid_t uid; ++ if (monitor->sd_source != NULL) { ++ uid_t uid; + +- if (!nm_session_user_to_uid (username, &uid, error)) +- return FALSE; ++ if (!nm_session_user_to_uid (username, &uid, error)) ++ return FALSE; ++ ++ return nm_session_monitor_uid_active (monitor, uid, error); ++ } else { ++ Session *s; ++ ++ if (!ensure_database (monitor, error)) ++ return FALSE; ++ ++ s = g_hash_table_lookup (monitor->sessions_by_user, (gpointer) username); ++ if (!s) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, ++ "No session found for user '%s'", ++ username); ++ return FALSE; ++ } + +- return nm_session_monitor_uid_active (monitor, uid, error); ++ return s->active; ++ } + } + + gboolean +@@ -236,10 +546,31 @@ + const char **out_user, + GError **error) + { +- if (!nm_session_uid_to_user (uid, out_user, error)) +- return FALSE; ++ if (monitor->sd_source != NULL) { ++ if (!nm_session_uid_to_user (uid, out_user, error)) ++ return FALSE; + +- return sd_uid_get_sessions (uid, FALSE, NULL) > 0; ++ return sd_uid_get_sessions (uid, FALSE, NULL) > 0; ++ } else { ++ Session *s; ++ ++ if (!ensure_database (monitor, error)) ++ return FALSE; ++ ++ s = g_hash_table_lookup (monitor->sessions_by_uid, GUINT_TO_POINTER (uid)); ++ if (!s) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, ++ "No session found for uid %d", ++ uid); ++ return FALSE; ++ } ++ ++ if (out_user) ++ *out_user = s->user; ++ return TRUE; ++ } + } + + gboolean +@@ -247,5 +578,24 @@ + uid_t uid, + GError **error) + { +- return sd_uid_get_sessions (uid, TRUE, NULL) > 0; ++ if (monitor->sd_source != NULL) ++ return sd_uid_get_sessions (uid, TRUE, NULL) > 0; ++ else { ++ Session *s; ++ ++ if (!ensure_database (monitor, error)) ++ return FALSE; ++ ++ s = g_hash_table_lookup (monitor->sessions_by_uid, GUINT_TO_POINTER (uid)); ++ if (!s) { ++ g_set_error (error, ++ NM_SESSION_MONITOR_ERROR, ++ NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, ++ "No session found for uid '%d'", ++ uid); ++ return FALSE; ++ } ++ ++ return s->active; ++ } + } |