summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abs/extra-testing/autofs/PKGBUILD67
-rw-r--r--abs/extra-testing/autofs/auto.master3
-rw-r--r--abs/extra-testing/autofs/auto.misc8
-rw-r--r--abs/extra-testing/autofs/auto.net29
-rw-r--r--abs/extra-testing/autofs/autofs364
-rw-r--r--abs/extra-testing/autofs/autofs.conf.d3
-rw-r--r--abs/extra-testing/autofs/autofs.install5
-rw-r--r--abs/extra-testing/autofs/heimdal.patch34
8 files changed, 87 insertions, 426 deletions
diff --git a/abs/extra-testing/autofs/PKGBUILD b/abs/extra-testing/autofs/PKGBUILD
index 1bc5435..ca6abea 100644
--- a/abs/extra-testing/autofs/PKGBUILD
+++ b/abs/extra-testing/autofs/PKGBUILD
@@ -1,48 +1,49 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: Dale Blount <dale@archlinux.org>
+# $Id: PKGBUILD 36638 2009-04-26 19:00:46Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Dale Blount <dale@archlinux.org>
# Contributor: Manolis Tzanidakis
pkgname=autofs
-pkgver=4.1.4
+pkgver=5.0.4
pkgrel=4
pkgdesc="A kernel-based automounter for Linux."
-arch=(i686 x86_64)
-url="ftp://ftp.kernel.org/pub/linux/daemons/autofs"
-depends=('libldap')
-backup=(etc/autofs/auto.master etc/conf.d/autofs)
-source=($url/v4/${pkgname}-${pkgver}.tar.bz2
- ${pkgname}
- ${pkgname}.conf.d
- auto.master
- auto.misc
- auto.net)
-md5sums=('7e3949114c00665b4636f0c318179657' '80b77182aa957646a2074433d3890518'\
- 'ddd69346754419faee15fc4c7edeb8b8' '0543a0d172eaec300e8d08708440dd4b'\
- '0be409ef0cdf0255ce701ed4ba9e46b5' 'e4d945d63abc0488a47a5e2a750e8c3b')
+arch=('i686' 'x86_64')
+url="http://wiki.autofs.net/FrontPage"
+license=('GPL2')
+depends=('libldap' 'libxml2' 'heimdal')
+backup=(etc/autofs/auto.master etc/autofs/auto.misc etc/conf.d/autofs)
+install=autofs.install
+source=("http://www.kernel.org/pub/linux/daemons/${pkgname}/v5/${pkgname}-${pkgver}.tar.bz2"
+ 'autofs' 'autofs.conf.d' 'auto.master' 'auto.misc'
+ 'heimdal.patch')
+md5sums=('2646dde61edd08dd952255558c733c08'
+ 'b4984b3161f50cba3d189b0ec594d014'
+ '47f597c870410055e0fdb66103daf928'
+ 'a6cefb591e77b31b79dbb7243646c96b'
+ 'd8a15ec9186c5c0b36e5cea1e2739e8a'
+ '1ee4825e26ad72bfe86acec3d3da5d2a')
build() {
export MAKEFLAGS="-j1"
- cd ${startdir}/src/${pkgname}-${pkgver}
- /bin/sed -i "s:-O3 -fomit-frame-pointer -Wall:${CFLAGS}:" \
- Makefile.rules
- /bin/sed -i "s:SUBDIRS = lib daemon modules man samples:SUBDIRS = lib daemon modules man:" \
- Makefile.rules
- ./configure --prefix=/usr --sysconfdir=/etc/autofs
- /usr/bin/make || return 1
- /usr/bin/make INSTALLROOT=${startdir}/pkg install
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ sed -i "s:SUBDIRS = lib daemon modules man samples:SUBDIRS = lib daemon modules man:" Makefile.rules
+ patch -Np1 -i ${srcdir}/heimdal.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/autofs \
+ --with-mapdir=/etc/autofs \
+ --without-hesiod
+ make || return 1
+ make INSTALLROOT=${pkgdir} install
local conf_file
for conf_file in auto.{master,misc}; do
- /bin/install -D -m 644 ${startdir}/$conf_file \
- ${startdir}/pkg/etc/autofs/$conf_file
+ install -D -m 644 ${srcdir}/$conf_file ${pkgdir}/etc/autofs/$conf_file
done
- /bin/install -m 755 ${startdir}/auto.net \
- ${startdir}/pkg/etc/autofs/auto.net
- /bin/sed -i "s:/etc:/etc/autofs:g" \
- ${startdir}/pkg/usr/man/man5/auto.master.5
- /bin/install -D -m 755 ${startdir}/autofs ${startdir}/pkg/etc/rc.d/autofs
- /bin/install -D -m 644 ${startdir}/autofs.conf.d \
- ${startdir}/pkg/etc/conf.d/autofs
+ sed -i "s:/etc:/etc/autofs:g" ${pkgdir}/usr/share/man/man5/auto.master.5
+ install -D -m 755 ${srcdir}/autofs ${pkgdir}/etc/rc.d/autofs
+ install -D -m 644 ${srcdir}/autofs.conf.d ${pkgdir}/etc/conf.d/autofs
}
# vim: ts=2 sw=2 et ft=sh
diff --git a/abs/extra-testing/autofs/auto.master b/abs/extra-testing/autofs/auto.master
index faa42c9..be4ea73 100644
--- a/abs/extra-testing/autofs/auto.master
+++ b/abs/extra-testing/autofs/auto.master
@@ -3,5 +3,4 @@
# mountpoint map options
# For details of the format look at autofs(5).
-/var/autofs/misc /etc/autofs/auto.misc
-/var/autofs/net /etc/autofs/auto.net
+#/media /etc/autofs/auto.media
diff --git a/abs/extra-testing/autofs/auto.misc b/abs/extra-testing/autofs/auto.misc
index e7714bd..5691566 100644
--- a/abs/extra-testing/autofs/auto.misc
+++ b/abs/extra-testing/autofs/auto.misc
@@ -2,8 +2,6 @@
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage
-kernel -ro ftp.kernel.org:/pub/linux
-boot -fstype=ext2 :/dev/hda1
-removable -fstype=ext2 :/dev/hdd
-cd -fstype=iso9660,ro :/dev/hdc
-floppy -fstype=auto :/dev/fd0
+cdrom -fstype=iso9660,ro,nodev,nosuid :/dev/cdrom
+floppy -fstype=auto,async,nodev,nosuid,umask=000 :/dev/fl
+usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sda1
diff --git a/abs/extra-testing/autofs/auto.net b/abs/extra-testing/autofs/auto.net
deleted file mode 100644
index 20861d1..0000000
--- a/abs/extra-testing/autofs/auto.net
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-# $Id: auto.net,v 1.1 2003/11/15 15:40:14 manolis Exp $
-
-# Look at what a host is exporting to determine what we can mount.
-# This is very simple, but it appears to work surprisingly well
-
-key="$1"
-
-# add "nosymlink" here if you want to suppress symlinking local filesystems
-# Note: "nonstrict" is now set by default, remove it if you don't want it.
-opts="-fstype=nfs,hard,intr,nodev,nosuid,nonstrict"
-
-# Showmount comes in a number of names and varieties. "showmount" is
-# typically an older version which accepts the '--no-headers' flag
-# but ignores it. "kshowmount" is the newer version installed with knfsd,
-# which both accepts and acts on the '--no-headers' flag.
-#SHOWMOUNT="kshowmount --no-headers -e $key"
-#SHOWMOUNT="showmount -e $key | tail +2"
-
-# Newer distributions get this right
-SHOWMOUNT="/usr/sbin/showmount --no-headers -e $key"
-
-$SHOWMOUNT | LC_ALL=C sort +0 | \
- awk -v key="$key" -v opts="$opts" -- '
- BEGIN { ORS=""; first=1 }
- { if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
- END { if (!first) print "\n"; else exit 1 }
- '
diff --git a/abs/extra-testing/autofs/autofs b/abs/extra-testing/autofs/autofs
index 83b0303..59ea4f5 100644
--- a/abs/extra-testing/autofs/autofs
+++ b/abs/extra-testing/autofs/autofs
@@ -6,384 +6,38 @@
# source application-specific settings
[ -f /etc/conf.d/autofs ] && . /etc/conf.d/autofs
-DAEMON=/usr/sbin/automount
-
if [ ! -z "$TIMEOUT" ]; then
daemonoptions="--timeout=$TIMEOUT $daemonoptions"
fi
-# Extract the schemes from /etc/nsswitch.conf
-# (function derived from RedHat)
-function getschemes()
-{
- grep ^automount: /etc/nsswitch.conf | sed -e 's/^.*://' -e 's/\[.*\]/ /g'
-}
-
-# Process the schemes found in /etc/nsswitch.conf
-# (function derived from RedHat, with some modifications)
-function getrawmounts()
-{
- for scheme in `getschemes` ; do
- case "$scheme" in
- files)
- if [ -z "$filescheme" ] ; then
- if getmounts_file /etc/autofs/auto.master; then
- filescheme=1 # success
- else
- filescheme=0 # failure
- fi
- export filescheme
- fi
- ;;
- nis)
- if [ -z "$nisscheme" ] ; then
- if getnismounts auto.master; then
- nisscheme=1 # success
- else
- nisscheme=0 # failure
- fi
- export nisscheme
- fi
- ;;
- ldap*)
- if [ -z "$ldapscheme" ] ; then
- if getldapmounts; then
- ldapscheme=1 # success
- else
- ldapscheme=0 # failure
- fi
- export ldapscheme
- fi
- ;;
- esac
- done
-
- if [ -z "$filescheme" -a -z "$nisscheme" -a -z "$ldapscheme" ]; then
- # nothing configured in /etc/nsswitch.conf, fall back to old behaviour
- if ! getmounts_file /etc/autofs/auto.master; then
- if ! getnismounts auto.master; then
- if ! getldapmounts; then
- echo "no autofs mounts configured!" 1>&2
- fi
- fi
- fi
- else
- if [ ! \( "$filescheme" == "1" -o "$nisscheme" == "1" -o "$ldapscheme" == "1" \) ]; then
- # all schemes found in /etc/nsswitch.conf have failed
- echo "no autofs mounts configured!" 1>&2
- fi
- fi
-}
-
-# This function will build a list of automount commands to execute in
-# order to activate all the mount points. It is used to figure out
-# the difference of automount points in case of a reload
-function getmounts()
-{
- getrawmounts
-}
-
-function getmounts_file()
-{
- # Check for local maps to be loaded
- local map="$1"
- shift
- if [ -f "$map" ]; then
- cat "$map" | sed -e '/^#/d' -e '/^$/d' | process_master_file
- else
- return 1
- fi
-}
-
-function process_master_file()
-{
- local line_options
- local daemon_options
- line_options="$@" # from `+auto.master <line_options>' in /etc/autofs/auto.master
-
- while read dir map first_option options; do
- all_options="$first_option $options"
-
- case "$dir" in
- +*)
- # note: $map contains options instead of a map
- getnismounts "${dir/+/}" "$line_options" "$map" "$all_options"
- continue;
- ;;
- '/-')
- # ignore (not supported) direct maps
- continue;
- ;;
- esac
-
- if [ ! -z "$dir" -a ! -z "$map" -a x`echo "$map" | cut -c1` != 'x-' ]; then
- type=""
- # Break up the maptype and map, if the map type is specified
- maptype=`echo $map | cut -f1 -d:`
- if [ "$maptype" != "$map" ]; then
- # map has form <maptype>:<map>
- type=$maptype
- map=`echo $map | cut -f2- -d:`
- else
- # special handling of maps
- case "$map" in
- hesiod|userhome)
- type=$map
- map=""
- ;;
- ldap)
- # /<mountpoint> ldap <ldap data> <options>
- type=ldap
-
- # extract LDAP data
- map="$first_option"
- all_options=$options
- ;;
- /*)
- # map is absolute path
- if [ -x $map ]; then
- type=program
- elif [ -f $map ]; then
- type=file
- else
- # invalid absolute path, ignoring
- type=""
- fi
- ;;
- !*)
- # map is executable file
- type=program
- map="${map/!/}"
- ;;
- *)
- # map is relative path or empty
- if [ ! -z "$map" ]; then
- # map is relative path
- if [ -x /etc/autofs/$map ]; then
- type=program
- map=/etc/autofs/$map
- elif [ -f /etc/autofs/$map ]; then
- type=file
- map=/etc/autofs/$map
- else
- type=yp
- fi
- else
- # map is empty, ignoring
- type=""
- fi
- ;;
- esac
- fi
-
- if [ "$type" ]; then
- options="$line_options $all_options"
-
- daemon_options=`munge_options daemon $daemonoptions $options`
- options=`munge_options mount $options`
-
- echo "$DAEMON $daemon_options -- $dir $type $map $localoptions $options" | sed -e 's/ */ /g'
- fi
- fi
- done
-}
-
-function getnismounts()
-{
- # Check for YellowPage maps to be loaded
- local map="$1"
- shift
- if [ -e /usr/bin/ypcat ] && [ `ypcat -k "$map" 2>/dev/null | wc -l` -gt 0 ]; then
- # exclude references to other nis maps (avoid self-references -> inf. loop)
- # - e.g. a map may look like:
- # $ ypcat -k auto.master
- # +auto_master # <- = auto.master = erk!
- # /net -hosts -nosuid,nobrowse
- # /home auto_home -nobrowse
- ypcat -k "$map" | grep -v '^+' | process_master_file "$@"
- else
- return 1
- fi
-}
-
-function getldapmounts() {
- if [ ! -x /usr/bin/ldapsearch -o -z "$LDAPURI" -o -z "$LDAPBASE" ]; then
- return 1
- fi
-
- # TODO: Doesn't yet work for LDIF output where lines are continued on the
- # next line (starting with space or tab). (See ldif(5))
-
- ldapsearch -LLL -H $LDAPURI -b $LDAPBASE -x \
- '(objectClass=automount)' cn automountInformation 2>/dev/null \
- | while read attr val; do
- case "$attr" in
- dn:)
- node=""
- args=""
- ;;
- cn:)
- node=$val
- ;;
- automountInformation:)
- args=$val
- ;;
- *)
- ;;
- esac
- if [ -n "$node" -a -n "$args" ]; then
- echo "$node $args" | process_master_file "$@"
- node=""
- args=""
- fi
- done
-}
-
-# List active mounts
-function active()
-{
- ps ax|grep "[0-9]:[0-9][0-9] $DAEMON " |
- while read pid tt stat time command; do
- echo $command
- done
-}
-
-# Status lister.
-function status()
-{
- echo "Configured Mount Points:"
- echo "------------------------"
- getmounts | sed 's/ -- / /'
- echo ""
- echo "Active Mount Points:"
- echo "--------------------"
- active
-}
-
-function munge_options()
-{
- local which="$1"
- shift
-
- o="$@"
- # bring `timeout' option in suitable format
- o=`echo "$o" | sed -e 's/\(\(-\|, *\)t\(imeout\)\?\) \+/\1=/g'`
- # remove dashes in front of options
- o=`echo "$o" | sed -e 's/^-\+//' -e 's/ -\+/ /' -e 's/,-\+/,/g'`
-
- echo "$o" | awk -v which="$which" '
-BEGIN {
- RS="[, \n]"
- FS="="
- daemon_opts[ "timeout" ] = "timeout"
- daemon_opts[ "t" ] = "timeout"
-}
-{
- if ( $0 ~ /^$/ )
- next
- if ( $1 in daemon_opts ) {
- daemon[ daemon_opts[ $1 ] ] = $2
- } else if ($1 ~ /^D.+/) {
- defines[ $1 ] = $2
- } else {
- mount[NR] = $0
- }
-}
-END {
- if ( which ~ "^daemon$" ) {
- if ( "timeout" in daemon ) {
- printf "--timeout=%s\n", daemon["timeout"]
- }
- } else {
- for ( a in defines ) {
- printf "-%s=%s ", a, defines[a]
- }
- for ( a in mount ) {
- if ( length( out ) )
- out=out "," mount[a]
- else
- out=mount[a]
- }
- printf "%s\n", out
- }
-}
-'
-}
-
-function get_command_from_pid()
-{
- ps ax | grep "[0-9]:[0-9][0-9] $DAEMON " | (
- while read pid tt stat time command; do
- if [ "$pid" = "$1" ] ; then
- echo `echo "$command" | sed 's/--pid-file.*\.pid/ /'`
- return 0
- fi
- done
- )
-
- return 0
-}
-
-# return true if at least one pid is alive
-function alive()
-{
- if [ -z "$*" ]; then
- return 1
- fi
- for i in $*; do
- if kill -0 $i 2> /dev/null; then
- return 0
- fi
- done
-
- return 1
-}
-
-# Start the fun :)
-PID=`pidof -o %PPID /usr/sbin/automount`
+PID=`cat /var/run/autofs-running 2> /dev/null`
case "$1" in
start)
- stat_busy "Starting automounter"
- getmounts | while read cmd args; do
- opt=${args%%-- *}
- rest=${args#*-- }
- mnt=${rest%% *}
- rest=${rest#* }
- echo -n " $mnt"
- if [ ! -d /var/run/autofs ]; then
- mkdir /var/run/autofs
- fi
- pidfile=/var/run/autofs/`echo $mnt | sed 's,_,__,g;s,/,_:,g'`.pid
- $DAEMON $daemonoptions --pid-file=$pidfile $opt $mnt $rest
- done
+ stat_busy "Starting Automounter"
+ [ -z "$PID" ] && /usr/sbin/automount $daemonoptions &> /dev/null
if [ $? -gt 0 ]; then
stat_fail
else
add_daemon autofs
stat_done
fi
- ;;
+ ;;
stop)
- stat_busy "Stopping automounter"
- [ ! -z "$PID" ] && kill $PID &> /dev/null
+ stat_busy "Stopping Automounter"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
if [ $? -gt 0 ]; then
stat_fail
else
rm_daemon autofs
stat_done
fi
- ;;
+ ;;
restart)
$0 stop
sleep 1
$0 start
- ;;
- status)
- status
- ;;
+ ;;
*)
echo "usage: $0 {start|stop|restart}"
- ;;
esac
-
-exit 0
+exit 0
diff --git a/abs/extra-testing/autofs/autofs.conf.d b/abs/extra-testing/autofs/autofs.conf.d
index 435665d..bc82491 100644
--- a/abs/extra-testing/autofs/autofs.conf.d
+++ b/abs/extra-testing/autofs/autofs.conf.d
@@ -1,5 +1,4 @@
-# e.g. localoptions='rsize=8192,wsize=8192'
-localoptions=''
+#localoptions='rsize=8192,wsize=8192'
# e.g. --timeout=60
daemonoptions=''
diff --git a/abs/extra-testing/autofs/autofs.install b/abs/extra-testing/autofs/autofs.install
new file mode 100644
index 0000000..61120bb
--- /dev/null
+++ b/abs/extra-testing/autofs/autofs.install
@@ -0,0 +1,5 @@
+post_install(){
+ echo "########################################################"
+ echo "In autofs5 --ghost option isn't valid. In order to start"
+ echo "autofs you must remove it from your /etc/conf.d/autofs. "
+}
diff --git a/abs/extra-testing/autofs/heimdal.patch b/abs/extra-testing/autofs/heimdal.patch
new file mode 100644
index 0000000..c49b1fd
--- /dev/null
+++ b/abs/extra-testing/autofs/heimdal.patch
@@ -0,0 +1,34 @@
+--- autofs-5.0.4/modules/cyrus-sasl.c~ 2009-01-11 17:18:55.000000000 +0100
++++ autofs-5.0.4/modules/cyrus-sasl.c 2009-01-11 17:18:55.000000000 +0100
+@@ -66,6 +66,15 @@
+ #endif
+ #endif
+
++/**
++ * The type of a principal is different for MIT Krb5 and Heimdal.
++ * These macros are provided by Heimdal, and introduced here for MIT.
++ */
++#ifndef krb5_realm_length
++#define krb5_realm_length(r) ((r).length)
++#define krb5_realm_data(r) ((r).data)
++#endif
++
+ /*
+ * Once a krb5 credentials cache is setup, we need to set the KRB5CCNAME
+ * environment variable so that the library knows where to find it.
+@@ -451,11 +460,11 @@
+
+ /* setup a principal for the ticket granting service */
+ ret = krb5_build_principal_ext(ctxt->krb5ctxt, &tgs_princ,
+- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->length,
+- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->data,
++ krb5_realm_length(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)),
++ krb5_realm_data(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)),
+ strlen(KRB5_TGS_NAME), KRB5_TGS_NAME,
+- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->length,
+- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->data,
++ krb5_realm_length(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)),
++ krb5_realm_data(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)),
+ 0);
+ if (ret) {
+ error(logopt,