From f65ef2b86177fe3d1626d25bb1da05c01df00ded Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:55:14 +0000 Subject: [PATCH 001/157] auto-import changelog data from am-utils-6.0.4s5-8.src.rpm Sat Jul 15 2000 Bill Nottingham - move initscript back Wed Jul 12 2000 Prospector - automatic rebuild Thu Jul 06 2000 Nalin Dahyabhai - only create /var/lock/subsys/amd if startup succeeds - revamp shutdown procedure to minimize time spent just spinning - change initscripts dependency to /etc/init.d Tue Jul 04 2000 Florian La Roche - delete noreplace from initscript Wed Jun 28 2000 Nalin Dahyabhai - fix postun script - add requires: initscripts Tue Jun 27 2000 Nalin Dahyabhai - remove unnecessary libamu.so symlink Mon Jun 26 2000 Nalin Dahyabhai - move init script to /etc/init.d - add URL: tag Wed Jun 21 2000 Preston Brown - noreplace config files - gracefully stop/restart service Fri Jun 16 2000 Matt Wilson - FHS paths - 6.0.4 snapshot (as it builds against kernel 2.4 headers) Wed Feb 16 2000 Cristian Gafton - version 6.0.3 - enhance init script to be more wait4amd2die-like - make default map type to be file (#9185) - get rid of the kludges Thu Feb 03 2000 Cristian Gafton - man pages are compressed - version 6.0.2 - fix descriptions Mon Sep 13 1999 Cristian Gafton - version 6.0.1 final Tue Aug 24 1999 Cristian Gafton - remove the noldap patch - add amd.net file as the default config map file - change the config file to teh new config file format instead of a simple map file name. - try to avoid some damage with a new %pre script - prereq grep now - modify the init file so it calls amd -F /etc/amd.conf now Tue Aug 24 1999 Bill Nottingham - update to 6.0.1s11 Sat Jun 19 1999 Bill Nottingham - don't run by default Mon May 31 1999 Kenneth Skaar - Fixed amd -F core dump and related dumps by other programs Thu Apr 08 1999 Preston Brown - kill -HUP on reload, restart does a real restart. Fri Mar 26 1999 Bill Nottingham - twiddle an echo in initscript Tue Mar 23 1999 Cristian Gafton - version 6.0 proper - Serial:1 because to enforce versioning Sun Mar 21 1999 Cristian Gafton - auto rebuild in the new build environment (release 6) Wed Jan 06 1999 Cristian Gafton - rebuild for glibc 2.1 - strip all binaries Thu Aug 13 1998 Jeff Johnson - add missing ':' to default 'opts:=nosuid,nodev' - install info pages Mon Jul 13 1998 Cristian Gafton - added the NIS support that the broken configure script failed to detect Tue May 05 1998 Cristian Gafton - disabled autofs support on alpha - run ldconfig in postinstall Mon May 04 1998 Cristian Gafton - new package to replace the old and unmaintained amd --- .cvsignore | 1 + am-utils.conf | 33 ++++++++ am-utils.init | 94 ++++++++++++++++++++++ am-utils.net.map | 2 + am-utils.spec | 202 +++++++++++++++++++++++++++++++++++++++++++++++ am-utils.sysconf | 3 + sources | 1 + 7 files changed, 336 insertions(+) create mode 100644 am-utils.conf create mode 100755 am-utils.init create mode 100644 am-utils.net.map create mode 100644 am-utils.spec create mode 100644 am-utils.sysconf diff --git a/.cvsignore b/.cvsignore index e69de29..3318aa4 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +am-utils-6.0.4s5.tar.gz diff --git a/am-utils.conf b/am-utils.conf new file mode 100644 index 0000000..a97d980 --- /dev/null +++ b/am-utils.conf @@ -0,0 +1,33 @@ +# +# amd default config file +# +# check amd.conf(5) man page for details about options in this file +# + +# GLOBAL OPTIONS SECTION +[ global ] +normalize_hostnames = no +print_pid = yes +pid_file = /var/run/amd.pid +restart_mounts = yes +auto_dir = /.automount +#log_file = /var/log/amd +log_file = syslog +log_options = all +#debug_options = all +plock = no +selectors_on_default = yes +print_version = no +# set map_type to "nis" for NIS maps, or comment it out to search for all +# types +map_type = file +search_path = /etc +browsable_dirs = yes +show_statfs_entries = no +fully_qualified_hosts = no +cache_duration = 300 + +# DEFINE AN AMD MOUNT POINT +[ /net ] +map_name = amd.net +map_type = file diff --git a/am-utils.init b/am-utils.init new file mode 100755 index 0000000..0a9037c --- /dev/null +++ b/am-utils.init @@ -0,0 +1,94 @@ +#!/bin/sh +# +# Version: 1.3 +# +# chkconfig: - 72 28 +# description: Runs the automount daemon that mounts devices and NFS hosts \ +# on demand. +# processname: amd +# config: /etc/amd.conf +# + +# we require the /etc/amd.conf file +[ -f /etc/amd.conf ] || exit 0 +[ -f /etc/sysconfig/amd ] || exit 0 + +# Source function library. +. /etc/init.d/functions + +. /etc/sysconfig/amd + +RETVAL=0 + +start() { + echo -n "Starting amd: " + daemon /usr/sbin/amd -F /etc/amd.conf $AMDOPTS + RETVAL=$? + echo + [ $RETVAL = 0 ] && touch /var/lock/subsys/amd + return $RETVAL +} + +stop() { + echo -n "Shutting down amd: " + delay=5 + count=10 + i=1 + is_down="nope" + while [ $i != $count ]; do + # run amq + /usr/sbin/amq > /dev/null 2>&1 + if [ $? = 0 ] ; then + # amd is up + /usr/sbin/amq | awk '{print $1}' | xargs -n 1 /usr/sbin/amq -uf + else + # amd is down + is_down="" + break + fi + /usr/sbin/amq > /dev/null 2>&1 + if [ $? != 0 ] ; then + sleep $delay + fi + i=`expr $i + 1` + done + if [ -n "$is_down" ] ; then + killproc amd + RETVAL=$? + fi + [ $RETVAL = 0 ] && rm -f /var/lock/subsys/amd + echo + return $RETVAL +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status amd + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/amd ]; then + stop + start + fi + ;; + reload) + killall -HUP amd + ;; + *) + echo "Usage: amd {start|stop|status|restart|condrestart|reload}" + exit 1 +esac + +exit 0 + diff --git a/am-utils.net.map b/am-utils.net.map new file mode 100644 index 0000000..9c372a2 --- /dev/null +++ b/am-utils.net.map @@ -0,0 +1,2 @@ +/defaults fs:=${autodir}/${rhost}/root/${rfs};opts:=nosuid,nodev +* rhost:=${key};type:=host;rfs:=/ diff --git a/am-utils.spec b/am-utils.spec new file mode 100644 index 0000000..c335e7d --- /dev/null +++ b/am-utils.spec @@ -0,0 +1,202 @@ +Summary: Automount utilities including an updated version of Amd. +Name: am-utils +Version: 6.0.4s5 +Release: 8 +Copyright: BSD +# XXX up serial with 6.0.4 comes out +Serial: 4 +Group: System Environment/Daemons +URL: http://www.cs.columbia.edu/~ezk/am-utils/ +Source: ftp://shekel.mcl.cs.columbia.edu/pub/am-utils/snapshots/am-utils-%{version}.tar.gz +Source1: am-utils.init +Source2: am-utils.conf +Source3: am-utils.sysconf +Source4: am-utils.net.map +BuildRoot: %{_tmppath}/%{name}-root +Requires: portmap, grep, gawk, findutils +Prereq: /sbin/install-info, /etc/init.d, /sbin/chkconfig, grep +Obsoletes: amd + +%description +Am-utils includes an updated version of Amd, the popular BSD +automounter. An automounter is a program which maintains a cache +of mounted filesystems. Filesystems are mounted when they are +first referenced by the user and unmounted after a certain period of +inactivity. Amd supports a variety of filesystems, including NFS, UFS, +CD-ROMS and local drives. + +You should install am-utils if you need a program for automatically +mounting and unmounting filesystems. + +%prep +%setup -q + +%build +%configure --enable-shared --enable-libs=-lnsl --disable-amq-mount +make + +%install +rm -rf $RPM_BUILD_ROOT +%makeinstall +mkdir -p $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d} +install -m 755 $RPM_SOURCE_DIR/am-utils.sysconf $RPM_BUILD_ROOT/etc/sysconfig/amd +install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd +strip $RPM_BUILD_ROOT/usr/sbin/* $RPM_BUILD_ROOT/usr/bin/* || : +gzip -q9f $RPM_BUILD_ROOT/%{_infodir}/*info* +mkdir -p $RPM_BUILD_ROOT/.automount +rm -f $RPM_BUILD_ROOT/usr/sbin/ctl-amd + +# install the default config and map files +install -m 600 %{SOURCE2} $RPM_BUILD_ROOT/etc/amd.conf +install -m 640 %{SOURCE4} $RPM_BUILD_ROOT/etc/amd.net + + +%clean +rm -rf $RPM_BUILD_ROOT + +%pre +# Check if we have an old fashioned amd.conf and rename if to amd.net +if [ "$1" = "0" ] ; then + if grep -q "auto_dir" /etc/amd.conf 2>/dev/null ; then + # this is okay + exit 0 + else + # this needs to be renamed. Still, if /etc/amd.net exists, then + # don't bother renamig it. RPM will handle it better than us here. + if [ -e /etc/amd.net ] ; then + exit 0 + else + mv -f /etc/amd.conf /etc/amd.net + fi + fi +fi +exit 0 + +%post +/sbin/ldconfig +/sbin/chkconfig --add amd +/sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir + +%preun +if [ $1 = 0 ]; then + /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir + /sbin/service amd stop >/dev/null 2>&1 + /sbin/chkconfig --del amd +fi + +%postun +if [ $1 -ge 1 ]; then + /sbin/service amd condrestart >/dev/null 2>&1 +fi + +%files +%defattr(-,root,root) +%doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample +%dir /.automount +/usr/bin/pawd +/usr/sbin/* +%{_mandir}/man[58]/* +%{_mandir}/man1/pawd.1* +%config(noreplace) /etc/amd.net +%config(noreplace) /etc/amd.conf +%config(noreplace) /etc/sysconfig/amd +%config /etc/rc.d/init.d/amd +%{_infodir}/*info*.gz +/usr/lib/libamu.so.*.* + +%changelog +* Sat Jul 15 2000 Bill Nottingham +- move initscript back + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Thu Jul 6 2000 Nalin Dahyabhai +- only create /var/lock/subsys/amd if startup succeeds +- revamp shutdown procedure to minimize time spent just spinning +- change initscripts dependency to /etc/init.d + +* Tue Jul 4 2000 Florian La Roche +- delete noreplace from initscript + +* Wed Jun 28 2000 Nalin Dahyabhai +- fix postun script +- add requires: initscripts + +* Tue Jun 27 2000 Nalin Dahyabhai +- remove unnecessary libamu.so symlink + +* Mon Jun 26 2000 Nalin Dahyabhai +- move init script to /etc/init.d +- add URL: tag + +* Wed Jun 21 2000 Preston Brown +- noreplace config files +- gracefully stop/restart service + +* Fri Jun 16 2000 Matt Wilson +- FHS paths +- 6.0.4 snapshot (as it builds against kernel 2.4 headers) + +* Wed Feb 16 2000 Cristian Gafton +- version 6.0.3 +- enhance init script to be more wait4amd2die-like +- make default map type to be file (#9185) +- get rid of the kludges + +* Thu Feb 03 2000 Cristian Gafton +- man pages are compressed +- version 6.0.2 +- fix descriptions + +* Mon Sep 13 1999 Cristian Gafton +- version 6.0.1 final + +* Tue Aug 24 1999 Cristian Gafton +- remove the noldap patch +- add amd.net file as the default config map file +- change the config file to teh new config file format instead of a + simple map file name. +- try to avoid some damage with a new %pre script +- prereq grep now +- modify the init file so it calls amd -F /etc/amd.conf now + +* Tue Aug 24 1999 Bill Nottingham +- update to 6.0.1s11 + +* Fri Jun 19 1999 Bill Nottingham +- don't run by default + +* Mon May 31 1999 Kenneth Skaar +- Fixed amd -F core dump and related dumps by other programs + +* Thu Apr 08 1999 Preston Brown +- kill -HUP on reload, restart does a real restart. + +* Fri Mar 26 1999 Bill Nottingham +- twiddle an echo in initscript + +* Tue Mar 23 1999 Cristian Gafton +- version 6.0 proper +- Serial:1 because to enforce versioning + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 6) + +* Wed Jan 06 1999 Cristian Gafton +- rebuild for glibc 2.1 +- strip all binaries + +* Thu Aug 13 1998 Jeff Johnson +- add missing ':' to default 'opts:=nosuid,nodev' +- install info pages + +* Mon Jul 13 1998 Cristian Gafton +- added the NIS support that the broken configure script failed to detect + +* Tue May 05 1998 Cristian Gafton +- disabled autofs support on alpha +- run ldconfig in postinstall + +* Mon May 04 1998 Cristian Gafton +- new package to replace the old and unmaintained amd diff --git a/am-utils.sysconf b/am-utils.sysconf new file mode 100644 index 0000000..17c4ff5 --- /dev/null +++ b/am-utils.sysconf @@ -0,0 +1,3 @@ +ADIR=/.automount +MOUNTPTS='/net /etc/amd.conf' +AMDOPTS= diff --git a/sources b/sources index e69de29..59c6287 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +a0db733ba2921ed28f74077b038c99bf am-utils-6.0.4s5.tar.gz From fedb53a7a2b94112fd3634ef209be65d3aedf7df Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:55:20 +0000 Subject: [PATCH 002/157] auto-import changelog data from am-utils-6.0.5-1.src.rpm Sat Apr 07 2001 Nalin Dahyabhai - update to 6.0.5 - remove /net from the default MOUNTPTS Tue Mar 13 2001 Nalin Dahyabhai - use MOUNTPTS when starting Fri Mar 02 2001 Nalin Dahyabhai - rebuild in new environment Wed Feb 14 2001 Nalin Dahyabhai - redo i18n for the init script Tue Jan 23 2001 Nalin Dahyabhai - re-do workaround from advice from the am-utils maintainers - redo i18n for the init script Sat Jan 20 2001 Nalin Dahyabhai - work around clash with nfs3_fh definition in 2.4 Tue Jan 16 2001 Nalin Dahyabhai - gettextize the init script (#24087) Tue Dec 19 2000 Nalin Dahyabhai - add ldconfig to %postun - chuck the hesiod patch -- new bind-utils doesn't have the support for it Fri Sep 08 2000 Nalin Dahyabhai - rebuild in new environment --- .cvsignore | 2 +- am-utils.init | 25 ++++++++++++++---------- am-utils.spec | 51 ++++++++++++++++++++++++++++++++++++++++-------- am-utils.sysconf | 2 +- sources | 2 +- 5 files changed, 61 insertions(+), 21 deletions(-) diff --git a/.cvsignore b/.cvsignore index 3318aa4..1e0f447 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.0.4s5.tar.gz +am-utils-6.0.5.tar.gz diff --git a/am-utils.init b/am-utils.init index 0a9037c..9cdb538 100755 --- a/am-utils.init +++ b/am-utils.init @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Version: 1.3 # @@ -16,21 +16,26 @@ # Source function library. . /etc/init.d/functions -. /etc/sysconfig/amd +# Recover AMDOPTS from /etc/sysconfig/amd. +if [ -f /etc/sysconfig/amd ] ; then + . /etc/sysconfig/amd +fi RETVAL=0 +prog=amd +amd=/usr/sbin/amd start() { - echo -n "Starting amd: " - daemon /usr/sbin/amd -F /etc/amd.conf $AMDOPTS + echo -n $"Starting $prog: " + daemon $amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS RETVAL=$? - echo + echo [ $RETVAL = 0 ] && touch /var/lock/subsys/amd return $RETVAL } stop() { - echo -n "Shutting down amd: " + echo -n $"Stopping $prog: " delay=5 count=10 i=1 @@ -53,7 +58,7 @@ stop() { i=`expr $i + 1` done if [ -n "$is_down" ] ; then - killproc amd + killproc $amd RETVAL=$? fi [ $RETVAL = 0 ] && rm -f /var/lock/subsys/amd @@ -70,7 +75,7 @@ case "$1" in stop ;; status) - status amd + status $amd ;; restart) stop @@ -83,10 +88,10 @@ case "$1" in fi ;; reload) - killall -HUP amd + action $"Reloading $prog:" killall -HUP $amd ;; *) - echo "Usage: amd {start|stop|status|restart|condrestart|reload}" + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac diff --git a/am-utils.spec b/am-utils.spec index c335e7d..d195947 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,20 +1,21 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.0.4s5 -Release: 8 +Version: 6.0.5 +Release: 1 Copyright: BSD -# XXX up serial with 6.0.4 comes out -Serial: 4 +Epoch: 5 Group: System Environment/Daemons -URL: http://www.cs.columbia.edu/~ezk/am-utils/ -Source: ftp://shekel.mcl.cs.columbia.edu/pub/am-utils/snapshots/am-utils-%{version}.tar.gz +URL: http://am-utils.org/ +Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{version}.tar.gz Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map +Patch: am-utils-6.0.4-nfs3.patch BuildRoot: %{_tmppath}/%{name}-root +BuildPrereq: openldap-devel Requires: portmap, grep, gawk, findutils -Prereq: /sbin/install-info, /etc/init.d, /sbin/chkconfig, grep +Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd %description @@ -30,9 +31,12 @@ mounting and unmounting filesystems. %prep %setup -q +%patch -p1 -b .nfs3 +autoheader +autoconf %build -%configure --enable-shared --enable-libs=-lnsl --disable-amq-mount +%configure --enable-shared --enable-libs="-lnsl -lresolv" --disable-amq-mount make %install @@ -88,6 +92,7 @@ fi if [ $1 -ge 1 ]; then /sbin/service amd condrestart >/dev/null 2>&1 fi +/sbin/ldconfig %files %defattr(-,root,root) @@ -105,6 +110,36 @@ fi /usr/lib/libamu.so.*.* %changelog +* Sat Apr 7 2001 Nalin Dahyabhai +- update to 6.0.5 +- remove /net from the default MOUNTPTS + +* Tue Mar 13 2001 Nalin Dahyabhai +- use MOUNTPTS when starting + +* Fri Mar 2 2001 Nalin Dahyabhai +- rebuild in new environment + +* Wed Feb 14 2001 Nalin Dahyabhai +- redo i18n for the init script + +* Tue Jan 23 2001 Nalin Dahyabhai +- re-do workaround from advice from the am-utils maintainers +- redo i18n for the init script + +* Sat Jan 20 2001 Nalin Dahyabhai +- work around clash with nfs3_fh definition in 2.4 + +* Tue Jan 16 2001 Nalin Dahyabhai +- gettextize the init script (#24087) + +* Tue Dec 19 2000 Nalin Dahyabhai +- add ldconfig to %%postun +- chuck the hesiod patch -- new bind-utils doesn't have the support for it + +* Fri Sep 8 2000 Nalin Dahyabhai +- rebuild in new environment + * Sat Jul 15 2000 Bill Nottingham - move initscript back diff --git a/am-utils.sysconf b/am-utils.sysconf index 17c4ff5..ee8b718 100644 --- a/am-utils.sysconf +++ b/am-utils.sysconf @@ -1,3 +1,3 @@ +#MOUNTPTS='/net /etc/amd.net' ADIR=/.automount -MOUNTPTS='/net /etc/amd.conf' AMDOPTS= diff --git a/sources b/sources index 59c6287..b25f556 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a0db733ba2921ed28f74077b038c99bf am-utils-6.0.4s5.tar.gz +e56e7b1a1ed34a479defb00507b728cb am-utils-6.0.5.tar.gz From 35dabdf2b043d69b8009b12c10fc72e58d3f9b05 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:55:26 +0000 Subject: [PATCH 003/157] auto-import changelog data from am-utils-6.0.6-2.src.rpm Tue Jun 26 2001 Florian La Roche - change filelist to include link from library major version number Tue May 22 2001 Nalin Dahyabhai - update to 6.0.6 --- .cvsignore | 2 +- am-utils.spec | 12 +++++++++--- sources | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.cvsignore b/.cvsignore index 1e0f447..4bb62c0 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.0.5.tar.gz +am-utils-6.0.6.tar.gz diff --git a/am-utils.spec b/am-utils.spec index d195947..378595d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.0.5 -Release: 1 +Version: 6.0.6 +Release: 2 Copyright: BSD Epoch: 5 Group: System Environment/Daemons @@ -107,9 +107,15 @@ fi %config(noreplace) /etc/sysconfig/amd %config /etc/rc.d/init.d/amd %{_infodir}/*info*.gz -/usr/lib/libamu.so.*.* +/usr/lib/libamu.so.* %changelog +* Tue Jun 26 2001 Florian La Roche +- change filelist to include link from library major version number + +* Tue May 22 2001 Nalin Dahyabhai +- update to 6.0.6 + * Sat Apr 7 2001 Nalin Dahyabhai - update to 6.0.5 - remove /net from the default MOUNTPTS diff --git a/sources b/sources index b25f556..f8cde62 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -e56e7b1a1ed34a479defb00507b728cb am-utils-6.0.5.tar.gz +090524b535af2cdf01112278c2f697b9 am-utils-6.0.6.tar.gz From 7d203072e18bcadb82b0be996cf892d9ed2d2dae Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:55:29 +0000 Subject: [PATCH 004/157] auto-import changelog data from am-utils-6.0.6-3.src.rpm Wed Jul 18 2001 Nalin Dahyabhai - rebuild --- am-utils.init | 11 ++++++----- am-utils.spec | 23 ++++++++++++++--------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/am-utils.init b/am-utils.init index 9cdb538..17a858b 100755 --- a/am-utils.init +++ b/am-utils.init @@ -9,9 +9,10 @@ # config: /etc/amd.conf # -# we require the /etc/amd.conf file -[ -f /etc/amd.conf ] || exit 0 -[ -f /etc/sysconfig/amd ] || exit 0 +# We require the /etc/amd.conf file, but supply it in the package, so it +# should always be there. +[ -f /etc/amd.conf ] || exit $? +[ -f /etc/sysconfig/amd ] || exit $? # Source function library. . /etc/init.d/functions @@ -76,6 +77,7 @@ case "$1" in ;; status) status $amd + RETVAL=$? ;; restart) stop @@ -95,5 +97,4 @@ case "$1" in exit 1 esac -exit 0 - +exit $RETVAL diff --git a/am-utils.spec b/am-utils.spec index 378595d..d232a93 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,8 +1,8 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.6 -Release: 2 -Copyright: BSD +Release: 3 +License: BSD Epoch: 5 Group: System Environment/Daemons URL: http://am-utils.org/ @@ -13,7 +13,7 @@ Source3: am-utils.sysconf Source4: am-utils.net.map Patch: am-utils-6.0.4-nfs3.patch BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: openldap-devel +BuildPrereq: db1-devel, openldap-devel Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd @@ -98,8 +98,8 @@ fi %defattr(-,root,root) %doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample %dir /.automount -/usr/bin/pawd -/usr/sbin/* +%{_bindir}/pawd +%{_sbindir}/* %{_mandir}/man[58]/* %{_mandir}/man1/pawd.1* %config(noreplace) /etc/amd.net @@ -107,11 +107,16 @@ fi %config(noreplace) /etc/sysconfig/amd %config /etc/rc.d/init.d/amd %{_infodir}/*info*.gz -/usr/lib/libamu.so.* +%{_libdir}/libamu.so.*.* %changelog -* Tue Jun 26 2001 Florian La Roche -- change filelist to include link from library major version number +* Wed Jul 18 2001 Nalin Dahyabhai +- rebuild + +* Mon Jun 25 2001 Nalin Dahyabhai +- add BuildPrereq: db1-devel (#44987) +- use FHS macros +- return error codes correctly from init script (#44597) * Tue May 22 2001 Nalin Dahyabhai - update to 6.0.6 @@ -127,7 +132,7 @@ fi - rebuild in new environment * Wed Feb 14 2001 Nalin Dahyabhai -- redo i18n for the init script +- redo i18n for the init script (#24082) * Tue Jan 23 2001 Nalin Dahyabhai - re-do workaround from advice from the am-utils maintainers From 383e44be5e943f63d84205df5e3f6f28bc40f526 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:55:56 +0000 Subject: [PATCH 005/157] auto-import changelog data from am-utils-6.0.7-4.src.rpm Fri Feb 22 2002 Nalin Dahyabhai 6.0.7-4 - rebuild in new environment Sat Jan 26 2002 Jeff Johnson - add Provides: to white out certain perl Requires: Wed Jan 23 2002 Nalin Dahyabhai 6.0.7-2 - rebuild in new environment - require gdbm-devel at build-time instead of db1-devel Thu Sep 06 2001 Nalin Dahyabhai 6.0.7-1 - update to 6.0.7, fixing EIO on access bugs (#53251) - back out nfs3 patch; no longer needed for current kernels - don't explicitly strip binaries; let the buildroot policies handle it --- .cvsignore | 2 +- am-utils.spec | 37 ++++++++++++++++++++++++++++--------- sources | 2 +- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/.cvsignore b/.cvsignore index 4bb62c0..d35f7d2 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.0.6.tar.gz +am-utils-6.0.7.tar.gz diff --git a/am-utils.spec b/am-utils.spec index d232a93..340b65a 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.0.6 -Release: 3 +Version: 6.0.7 +Release: 4 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -11,9 +11,14 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Patch: am-utils-6.0.4-nfs3.patch BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: db1-devel, openldap-devel +BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel + +# XXX white out some (internal) perl Requires: +Provides: perl(::etc/global/lostaltmail.conf) +Provides: perl(::etc/local/lostaltmail.conf) +Provides: perl(::etc/os/lostaltmail.conf) + Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd @@ -31,12 +36,12 @@ mounting and unmounting filesystems. %prep %setup -q -%patch -p1 -b .nfs3 -autoheader -autoconf %build -%configure --enable-shared --enable-libs="-lnsl -lresolv" --disable-amq-mount +%configure \ + --enable-shared \ + --enable-am-cflags="$RPM_OPT_FLAGS" \ + --enable-libs="-lnsl -lresolv" make %install @@ -45,7 +50,6 @@ rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d} install -m 755 $RPM_SOURCE_DIR/am-utils.sysconf $RPM_BUILD_ROOT/etc/sysconfig/amd install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd -strip $RPM_BUILD_ROOT/usr/sbin/* $RPM_BUILD_ROOT/usr/bin/* || : gzip -q9f $RPM_BUILD_ROOT/%{_infodir}/*info* mkdir -p $RPM_BUILD_ROOT/.automount rm -f $RPM_BUILD_ROOT/usr/sbin/ctl-amd @@ -110,6 +114,21 @@ fi %{_libdir}/libamu.so.*.* %changelog +* Fri Feb 22 2002 Nalin Dahyabhai 6.0.7-4 +- rebuild in new environment + +* Sat Jan 26 2002 Jeff Johnson +- add Provides: to white out certain perl Requires: + +* Wed Jan 23 2002 Nalin Dahyabhai 6.0.7-2 +- rebuild in new environment +- require gdbm-devel at build-time instead of db1-devel + +* Thu Sep 6 2001 Nalin Dahyabhai 6.0.7-1 +- update to 6.0.7, fixing EIO on access bugs (#53251) +- back out nfs3 patch; no longer needed for current kernels +- don't explicitly strip binaries; let the buildroot policies handle it + * Wed Jul 18 2001 Nalin Dahyabhai - rebuild diff --git a/sources b/sources index f8cde62..1555a05 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -090524b535af2cdf01112278c2f697b9 am-utils-6.0.6.tar.gz +76a95778c5ad1e41699e15f1d668e89e am-utils-6.0.7.tar.gz From 748b4b05523b5b2130518a3e0f0fe67019d70dc6 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:56:02 +0000 Subject: [PATCH 006/157] auto-import changelog data from am-utils-6.0.7-7.src.rpm Wed May 29 2002 Nalin Dahyabhai 6.0.7-7 - adjust the perl reqs so that the lostaltmail config files aren't required by RPM Sun May 26 2002 Tim Powers - automated rebuild Thu May 09 2002 Nalin Dahyabhai 6.0.7-5 - rebuild in new environment --- am-utils.spec | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 340b65a..eca2b01 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.7 -Release: 4 +Release: 7 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -13,16 +13,13 @@ Source3: am-utils.sysconf Source4: am-utils.net.map BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel - -# XXX white out some (internal) perl Requires: -Provides: perl(::etc/global/lostaltmail.conf) -Provides: perl(::etc/local/lostaltmail.conf) -Provides: perl(::etc/os/lostaltmail.conf) - Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd +# We need to filter out some perl requirements for now. +%define __find_requires %{_builddir}/%{name}-%{version}/find-requires + %description Am-utils includes an updated version of Amd, the popular BSD automounter. An automounter is a program which maintains a cache @@ -36,6 +33,9 @@ mounting and unmounting filesystems. %prep %setup -q +find_requires=`rpm --eval %%{__find_requires}` +echo "$find_requires | grep -v lostaltmail.conf" > find-requires +chmod +x find-requires %build %configure \ @@ -114,6 +114,16 @@ fi %{_libdir}/libamu.so.*.* %changelog +* Wed May 29 2002 Nalin Dahyabhai 6.0.7-7 +- adjust the perl reqs so that the lostaltmail config files aren't required + by RPM + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Thu May 9 2002 Nalin Dahyabhai 6.0.7-5 +- rebuild in new environment + * Fri Feb 22 2002 Nalin Dahyabhai 6.0.7-4 - rebuild in new environment From bd34b6fed74380a63e4b5fb0217c0a67852443c9 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:56:05 +0000 Subject: [PATCH 007/157] auto-import changelog data from am-utils-6.0.7-8.src.rpm Fri Jun 21 2002 Tim Powers - automated rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index eca2b01..4702d18 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.7 -Release: 7 +Release: 8 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -114,6 +114,9 @@ fi %{_libdir}/libamu.so.*.* %changelog +* Fri Jun 21 2002 Tim Powers +- automated rebuild + * Wed May 29 2002 Nalin Dahyabhai 6.0.7-7 - adjust the perl reqs so that the lostaltmail config files aren't required by RPM From 2cc597203b0bbfc76f19728309cabf7cb8e0e02e Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:56:17 +0000 Subject: [PATCH 008/157] auto-import changelog data from am-utils-6.0.7-9.src.rpm Tue Aug 27 2002 Nalin Dahyabhai 6.0.7-9 - rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 4702d18..ec6e777 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.7 -Release: 8 +Release: 9 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -114,6 +114,9 @@ fi %{_libdir}/libamu.so.*.* %changelog +* Tue Aug 27 2002 Nalin Dahyabhai 6.0.7-9 +- rebuild + * Fri Jun 21 2002 Tim Powers - automated rebuild From 549061235c57ae6f59d7b266f295f0f9a20570c9 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:56:21 +0000 Subject: [PATCH 009/157] auto-import changelog data from am-utils-6.0.9-2.src.rpm Tue Feb 04 2003 Florian La Roche - add symlink to shared lib Fri Jan 31 2003 Nalin Dahyabhai 6.0.9-1 - update to 6.0.9 - disable RPM's internal dependency calculation so that we can filter out dependencies which are expected to be filled in by the site administrator Wed Jan 22 2003 Tim Powers - rebuilt Tue Jan 07 2003 Nalin Dahyabhai 6.0.8-3 - rebuild Wed Oct 30 2002 Nalin Dahyabhai 6.0.8-1 - update to 6.0.8 --- .cvsignore | 2 +- am-utils.spec | 48 +++++++++++++++++++++++++++++++++++++++++++----- sources | 2 +- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/.cvsignore b/.cvsignore index d35f7d2..5383eb2 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.0.7.tar.gz +am-utils-6.0.9.tar.gz diff --git a/am-utils.spec b/am-utils.spec index ec6e777..45fa545 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.0.7 -Release: 9 +Version: 6.0.9 +Release: 2 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -11,13 +11,15 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map +Patch: am-utils-gdbm.patch BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel +BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd # We need to filter out some perl requirements for now. +%define _use_internal_dependency_generator 0 %define __find_requires %{_builddir}/%{name}-%{version}/find-requires %description @@ -33,6 +35,9 @@ mounting and unmounting filesystems. %prep %setup -q +%patch -p1 +autoconf + find_requires=`rpm --eval %%{__find_requires}` echo "$find_requires | grep -v lostaltmail.conf" > find-requires chmod +x find-requires @@ -42,22 +47,36 @@ chmod +x find-requires --enable-shared \ --enable-am-cflags="$RPM_OPT_FLAGS" \ --enable-libs="-lnsl -lresolv" -make +make %{?_smp_flags} %install rm -rf $RPM_BUILD_ROOT %makeinstall mkdir -p $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d} install -m 755 $RPM_SOURCE_DIR/am-utils.sysconf $RPM_BUILD_ROOT/etc/sysconfig/amd +#install -m 755 scripts/redhat-ctl-amd $RPM_BUILD_ROOT/etc/rc.d/init.d/amd install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd gzip -q9f $RPM_BUILD_ROOT/%{_infodir}/*info* mkdir -p $RPM_BUILD_ROOT/.automount rm -f $RPM_BUILD_ROOT/usr/sbin/ctl-amd +# add symlinks to shared libs +/sbin/ldconfig -n $RPM_BUILD_ROOT/%{_libdir} + # install the default config and map files install -m 600 %{SOURCE2} $RPM_BUILD_ROOT/etc/amd.conf install -m 640 %{SOURCE4} $RPM_BUILD_ROOT/etc/amd.net +# We don't build a -devel package. +rm -f $RPM_BUILD_ROOT/%{_libdir}/libamu.a +rm -f $RPM_BUILD_ROOT/%{_libdir}/libamu.la + +# We don't include the info directory. +rm -f $RPM_BUILD_ROOT/%{_infodir}/dir + +# Remove the other sample config file. +rm -f $RPM_BUILD_ROOT/etc/amd.conf-sample +rm -f $RPM_BUILD_ROOT/etc/lostaltmail.conf-sample %clean rm -rf $RPM_BUILD_ROOT @@ -102,18 +121,37 @@ fi %defattr(-,root,root) %doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample %dir /.automount +%{_bindir}/expn %{_bindir}/pawd %{_sbindir}/* %{_mandir}/man[58]/* +%{_mandir}/man1/expn.1* %{_mandir}/man1/pawd.1* %config(noreplace) /etc/amd.net %config(noreplace) /etc/amd.conf %config(noreplace) /etc/sysconfig/amd %config /etc/rc.d/init.d/amd %{_infodir}/*info*.gz -%{_libdir}/libamu.so.*.* +%{_libdir}/libamu.so.* %changelog +* Tue Feb 04 2003 Florian La Roche +- add symlink to shared lib + +* Fri Jan 31 2003 Nalin Dahyabhai 6.0.9-1 +- update to 6.0.9 +- disable RPM's internal dependency calculation so that we can filter out + dependencies which are expected to be filled in by the site administrator + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Tue Jan 7 2003 Nalin Dahyabhai 6.0.8-3 +- rebuild + +* Wed Oct 30 2002 Nalin Dahyabhai 6.0.8-1 +- update to 6.0.8 + * Tue Aug 27 2002 Nalin Dahyabhai 6.0.7-9 - rebuild diff --git a/sources b/sources index 1555a05..06e241e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -76a95778c5ad1e41699e15f1d668e89e am-utils-6.0.7.tar.gz +1e288b8485c09a126e2bea4029602265 am-utils-6.0.9.tar.gz From dcccd226f50c000cc1984a1791c7e57267d00a89 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:56:49 +0000 Subject: [PATCH 010/157] auto-import changelog data from am-utils-6.0.9-4.src.rpm Tue Aug 05 2003 Elliot Lee 6.0.9-4 - Fix libtool Wed Jun 04 2003 Elliot Lee - rebuilt --- am-utils.spec | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 45fa545..6b19057 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 2 +Release: 4 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -13,7 +13,7 @@ Source3: am-utils.sysconf Source4: am-utils.net.map Patch: am-utils-gdbm.patch BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf +BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd @@ -36,7 +36,11 @@ mounting and unmounting filesystems. %prep %setup -q %patch -p1 +libtoolize --force +aclocal +automake autoconf +autoheader find_requires=`rpm --eval %%{__find_requires}` echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -135,6 +139,12 @@ fi %{_libdir}/libamu.so.* %changelog +* Tue Aug 5 2003 Elliot Lee 6.0.9-4 +- Fix libtool + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + * Tue Feb 04 2003 Florian La Roche - add symlink to shared lib From 5de336ce37091992f8a8b22b1a2aa8be6ac8837c Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:56:55 +0000 Subject: [PATCH 011/157] auto-import changelog data from am-utils-6.0.9-5.src.rpm Tue Nov 11 2003 Nalin Dahyabhai 6.0.9-5 - change permissions on /etc/sysconfig/amd from 0755 to 0644 (#109681) --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 6b19057..0422da1 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 4 +Release: 5 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -57,7 +57,7 @@ make %{?_smp_flags} rm -rf $RPM_BUILD_ROOT %makeinstall mkdir -p $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d} -install -m 755 $RPM_SOURCE_DIR/am-utils.sysconf $RPM_BUILD_ROOT/etc/sysconfig/amd +install -m 644 $RPM_SOURCE_DIR/am-utils.sysconf $RPM_BUILD_ROOT/etc/sysconfig/amd #install -m 755 scripts/redhat-ctl-amd $RPM_BUILD_ROOT/etc/rc.d/init.d/amd install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd gzip -q9f $RPM_BUILD_ROOT/%{_infodir}/*info* @@ -139,6 +139,9 @@ fi %{_libdir}/libamu.so.* %changelog +* Tue Nov 11 2003 Nalin Dahyabhai 6.0.9-5 +- change permissions on /etc/sysconfig/amd from 0755 to 0644 (#109681) + * Tue Aug 5 2003 Elliot Lee 6.0.9-4 - Fix libtool From 54a1bcbc6660e9406695aa32bcd6abfff4c549f4 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:57:31 +0000 Subject: [PATCH 012/157] auto-import changelog data from am-utils-6.0.9-6.1.src.rpm Tue Mar 02 2004 Elliot Lee - rebuilt Fri Feb 13 2004 Elliot Lee - rebuilt --- am-utils.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 0422da1..7611ed9 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 5 +Release: 6.1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -139,6 +139,12 @@ fi %{_libdir}/libamu.so.* %changelog +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + * Tue Nov 11 2003 Nalin Dahyabhai 6.0.9-5 - change permissions on /etc/sysconfig/amd from 0755 to 0644 (#109681) From fd25bb8816ead44b3f5e3cde5a3af792b818e72b Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:58:02 +0000 Subject: [PATCH 013/157] auto-import changelog data from am-utils-6.0.9-7.src.rpm Tue Jun 15 2004 Elliot Lee - rebuilt Mon Mar 15 2004 Nalin Dahyabhai - fix incorrect invocation of test in %pre and %preun --- am-utils.spec | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 7611ed9..149e9c3 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 6.1 +Release: 7 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -87,7 +87,7 @@ rm -rf $RPM_BUILD_ROOT %pre # Check if we have an old fashioned amd.conf and rename if to amd.net -if [ "$1" = "0" ] ; then +if [ "$1" -ne "0" ] ; then if grep -q "auto_dir" /etc/amd.conf 2>/dev/null ; then # this is okay exit 0 @@ -109,7 +109,7 @@ exit 0 /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir %preun -if [ $1 = 0 ]; then +if [ $1 -ne 0 ]; then /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir /sbin/service amd stop >/dev/null 2>&1 /sbin/chkconfig --del amd @@ -139,6 +139,12 @@ fi %{_libdir}/libamu.so.* %changelog +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Mon Mar 15 2004 Nalin Dahyabhai +- fix incorrect invocation of test in %%pre and %%preun + * Tue Mar 02 2004 Elliot Lee - rebuilt From 9042c98efa0e60e8a1857ac0216c803cd4cb11a4 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:58:18 +0000 Subject: [PATCH 014/157] auto-import changelog data from am-utils-6.0.9-8.src.rpm Tue Aug 31 2004 Nalin Dahyabhai 6.0.9-8 - rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 149e9c3..3209f9d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 7 +Release: 8 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -139,6 +139,9 @@ fi %{_libdir}/libamu.so.* %changelog +* Tue Aug 31 2004 Nalin Dahyabhai 6.0.9-8 +- rebuild + * Tue Jun 15 2004 Elliot Lee - rebuilt From e51b72648082360526eaf34f6dacb96751f3592d Mon Sep 17 00:00:00 2001 From: cvsdist Date: Thu, 9 Sep 2004 02:58:34 +0000 Subject: [PATCH 015/157] auto-import changelog data from am-utils-6.0.9-9.src.rpm Wed Sep 01 2004 Nalin Dahyabhai 6.0.9-9 - really fix %preun this time --- am-utils.spec | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 3209f9d..813ba19 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 8 +Release: 9 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -87,13 +87,16 @@ rm -rf $RPM_BUILD_ROOT %pre # Check if we have an old fashioned amd.conf and rename if to amd.net -if [ "$1" -ne "0" ] ; then - if grep -q "auto_dir" /etc/amd.conf 2>/dev/null ; then +if [ "$1" -ne 0 ] ; then + if ! test -r /etc/amd.conf ; then + # this is okay + exit 0 + elif grep -q "auto_dir" /etc/amd.conf 2>/dev/null ; then # this is okay exit 0 else # this needs to be renamed. Still, if /etc/amd.net exists, then - # don't bother renamig it. RPM will handle it better than us here. + # don't bother renaming it. RPM will handle it better than us here. if [ -e /etc/amd.net ] ; then exit 0 else @@ -109,7 +112,7 @@ exit 0 /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir %preun -if [ $1 -ne 0 ]; then +if [ $1 -eq 0 ]; then /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir /sbin/service amd stop >/dev/null 2>&1 /sbin/chkconfig --del amd @@ -139,6 +142,9 @@ fi %{_libdir}/libamu.so.* %changelog +* Wed Sep 1 2004 Nalin Dahyabhai 6.0.9-9 +- really fix %%preun this time + * Tue Aug 31 2004 Nalin Dahyabhai 6.0.9-8 - rebuild From 93b75eb57a0e95a7f782b972a5904b3457feeaf3 Mon Sep 17 00:00:00 2001 From: havill Date: Tue, 12 Oct 2004 20:46:00 +0000 Subject: [PATCH 016/157] - cleanup %pre script so amd.conf won't get stat()ed if it doesn't exist (#126656) --- am-utils.spec | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 813ba19..a5af77a 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 9 +Release: 10 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -87,24 +87,15 @@ rm -rf $RPM_BUILD_ROOT %pre # Check if we have an old fashioned amd.conf and rename if to amd.net -if [ "$1" -ne 0 ] ; then - if ! test -r /etc/amd.conf ; then - # this is okay - exit 0 - elif grep -q "auto_dir" /etc/amd.conf 2>/dev/null ; then - # this is okay - exit 0 - else - # this needs to be renamed. Still, if /etc/amd.net exists, then - # don't bother renaming it. RPM will handle it better than us here. - if [ -e /etc/amd.net ] ; then - exit 0 - else - mv -f /etc/amd.conf /etc/amd.net - fi - fi +if test "$1" -ne 0 +then if test -r /etc/amd.conf + then if grep -v -q "auto_dir" /etc/amd.conf + then if test ! -e /etc/amd.net + then mv -f /etc/amd.conf /etc/amd.net + fi + fi + fi fi -exit 0 %post /sbin/ldconfig @@ -142,6 +133,10 @@ fi %{_libdir}/libamu.so.* %changelog +* Tue Oct 12 2004 Adrian Havill 6.0.9-10 +- cleanup %pre script so amd.conf won't get stat()ed if it doesn't + exist (#126656) + * Wed Sep 1 2004 Nalin Dahyabhai 6.0.9-9 - really fix %%preun this time From 32644fe9389356ad8f360e5bc1d24af1ed44caaf Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 17 Mar 2005 09:48:19 +0000 Subject: [PATCH 017/157] rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index a5af77a..1c75c27 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 10 +Release: 11 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -133,6 +133,9 @@ fi %{_libdir}/libamu.so.* %changelog +* Thu Mar 17 2004 Peter Vrabec +- rebuild + * Tue Oct 12 2004 Adrian Havill 6.0.9-10 - cleanup %pre script so amd.conf won't get stat()ed if it doesn't exist (#126656) From 6abb53c0534023fd4e7db5c52367857a0450846d Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 17 Mar 2005 09:49:04 +0000 Subject: [PATCH 018/157] rebuild --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 1c75c27..46de8e0 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -133,7 +133,7 @@ fi %{_libdir}/libamu.so.* %changelog -* Thu Mar 17 2004 Peter Vrabec +* Thu Mar 17 2005 Peter Vrabec - rebuild * Tue Oct 12 2004 Adrian Havill 6.0.9-10 From ed99ca077da9bf1cfe8cea40f1e00f4c9420993e Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 17 Mar 2005 14:31:46 +0000 Subject: [PATCH 019/157] *** empty log message *** --- am-utils.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 46de8e0..5a653d3 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -19,8 +19,8 @@ Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd # We need to filter out some perl requirements for now. -%define _use_internal_dependency_generator 0 -%define __find_requires %{_builddir}/%{name}-%{version}/find-requires +#%define _use_internal_dependency_generator 0 +#%define __find_requires %{_builddir}/%{name}-%{version}/find-requires %description Am-utils includes an updated version of Amd, the popular BSD @@ -42,9 +42,9 @@ automake autoconf autoheader -find_requires=`rpm --eval %%{__find_requires}` -echo "$find_requires | grep -v lostaltmail.conf" > find-requires -chmod +x find-requires +#find_requires=`rpm --eval %%{__find_requires}` +#echo "$find_requires | grep -v lostaltmail.conf" > find-requires +#chmod +x find-requires %build %configure \ From 8e0b72497503f3bf1e4c9153d656d9988e234929 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 17 Mar 2005 16:22:54 +0000 Subject: [PATCH 020/157] rebuild by gcc4 --- am-utils.spec | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 5a653d3..a1a1918 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -11,7 +11,8 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Patch: am-utils-gdbm.patch +Patch0: am-utils-gdbm.patch +Patch1: am-utils-6.0.9.gcc4.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -35,12 +36,13 @@ mounting and unmounting filesystems. %prep %setup -q -%patch -p1 +%patch0 -p1 -b .gdbm libtoolize --force aclocal automake autoconf autoheader +%patch1 -p1 -b .gcc4 #find_requires=`rpm --eval %%{__find_requires}` #echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -134,7 +136,7 @@ fi %changelog * Thu Mar 17 2005 Peter Vrabec -- rebuild +- rebuild by gcc4 * Tue Oct 12 2004 Adrian Havill 6.0.9-10 - cleanup %pre script so amd.conf won't get stat()ed if it doesn't From 2c84280cd0bfb49bd15a7e0556e0523d17fcb23c Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Tue, 22 Mar 2005 14:58:48 +0000 Subject: [PATCH 021/157] *** empty log message *** --- am-utils.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index a1a1918..1e0e8c8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -20,8 +20,8 @@ Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd # We need to filter out some perl requirements for now. -#%define _use_internal_dependency_generator 0 -#%define __find_requires %{_builddir}/%{name}-%{version}/find-requires +%define _use_internal_dependency_generator 0 +%define __find_requires %{_builddir}/%{name}-%{version}/find-requires %description Am-utils includes an updated version of Amd, the popular BSD @@ -44,9 +44,9 @@ autoconf autoheader %patch1 -p1 -b .gcc4 -#find_requires=`rpm --eval %%{__find_requires}` -#echo "$find_requires | grep -v lostaltmail.conf" > find-requires -#chmod +x find-requires +find_requires=`rpm --eval %%{__find_requires}` +echo "$find_requires | grep -v lostaltmail.conf" > find-requires +chmod +x find-requires %build %configure \ From 80be3987c0aba72966fd87101a2e6e109dd46e1d Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Wed, 23 Mar 2005 08:36:15 +0000 Subject: [PATCH 022/157] *** empty log message *** --- am-utils.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 1e0e8c8..202112e 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -20,8 +20,8 @@ Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd # We need to filter out some perl requirements for now. -%define _use_internal_dependency_generator 0 -%define __find_requires %{_builddir}/%{name}-%{version}/find-requires +#%define _use_internal_dependency_generator 0 +#%define __find_requires %{_builddir}/%{name}-%{version}/find-requires %description Am-utils includes an updated version of Amd, the popular BSD From ac7abda7be9a200ced54f5bc49d781ecbff8bbcf Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Wed, 23 Mar 2005 14:44:03 +0000 Subject: [PATCH 023/157] find requires solved --- am-utils.spec | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 202112e..912c69d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -20,8 +20,8 @@ Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd # We need to filter out some perl requirements for now. -#%define _use_internal_dependency_generator 0 -#%define __find_requires %{_builddir}/%{name}-%{version}/find-requires +%define _use_internal_dependency_generator 0 +%define old_find_requires %{__find_requires} %description Am-utils includes an updated version of Amd, the popular BSD @@ -44,7 +44,7 @@ autoconf autoheader %patch1 -p1 -b .gcc4 -find_requires=`rpm --eval %%{__find_requires}` +find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires chmod +x find-requires @@ -87,6 +87,8 @@ rm -f $RPM_BUILD_ROOT/etc/lostaltmail.conf-sample %clean rm -rf $RPM_BUILD_ROOT +%define __find_requires %{_builddir}/%{name}-%{version}/find-requires + %pre # Check if we have an old fashioned amd.conf and rename if to amd.net if test "$1" -ne 0 From b38237829de39140a0a4209461263aa7dc2b8377 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 24 Mar 2005 09:10:06 +0000 Subject: [PATCH 024/157] #143118 implementing the util-linux mtab locking scheme into am-utils automounter --- am-utils.spec | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 912c69d..73c72b3 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 11 +Release: 12 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -13,6 +13,9 @@ Source3: am-utils.sysconf Source4: am-utils.net.map Patch0: am-utils-gdbm.patch Patch1: am-utils-6.0.9.gcc4.patch +Patch2: am-utils-mtablock-1.patch +Patch3: am-utils-mtablock-2.patch +Patch4: am-utils-mtablock-3.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -43,6 +46,9 @@ automake autoconf autoheader %patch1 -p1 -b .gcc4 +%patch2 -p1 -b .mtablock +%patch3 -p1 -b .mtablock +%patch4 -p1 -b .mtablock find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -137,6 +143,14 @@ fi %{_libdir}/libamu.so.* %changelog +* Thu Mar 24 2005 Peter Vrabec 6.0.9-12 +-fix the am-utils part of #143118 by implementing the util-linux + mtab locking scheme into am-utils automounter, patch and testing + by Daniel Berrange , improved locking + algorithm by (which allows for several + hundred or even thousand of parallel makes to finish + successfully and keep /etc/mtab in sync with /proc/mounts as well) + * Thu Mar 17 2005 Peter Vrabec - rebuild by gcc4 From 1700543cba6d3877bffdb2c3a6776239fb78c0d4 Mon Sep 17 00:00:00 2001 From: Florian La Roche Date: Sun, 31 Jul 2005 14:42:04 +0000 Subject: [PATCH 025/157] - package all symlinks --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 73c72b3..a98e035 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.0.9 -Release: 12 +Release: 13 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -140,9 +140,12 @@ fi %config(noreplace) /etc/sysconfig/amd %config /etc/rc.d/init.d/amd %{_infodir}/*info*.gz -%{_libdir}/libamu.so.* +%{_libdir}/libamu.so* %changelog +* Sun Jul 31 2005 Florian La Roche +- package all symlinks to libs + * Thu Mar 24 2005 Peter Vrabec 6.0.9-12 -fix the am-utils part of #143118 by implementing the util-linux mtab locking scheme into am-utils automounter, patch and testing From 11553a7ccc77a531e1d6757a0a50275bd0cff4da Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Fri, 19 Aug 2005 07:13:18 +0000 Subject: [PATCH 026/157] upgrade 6.1.1 --- .cvsignore | 2 +- am-utils.spec | 38 +++++++++++++------------------------- sources | 2 +- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/.cvsignore b/.cvsignore index 5383eb2..d4079c8 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.0.9.tar.gz +am-utils-6.1.1.tar.gz diff --git a/am-utils.spec b/am-utils.spec index a98e035..a4164ea 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.0.9 -Release: 13 +Version: 6.1.1 +Release: 1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -11,11 +11,6 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Patch0: am-utils-gdbm.patch -Patch1: am-utils-6.0.9.gcc4.patch -Patch2: am-utils-mtablock-1.patch -Patch3: am-utils-mtablock-2.patch -Patch4: am-utils-mtablock-3.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -39,16 +34,6 @@ mounting and unmounting filesystems. %prep %setup -q -%patch0 -p1 -b .gdbm -libtoolize --force -aclocal -automake -autoconf -autoheader -%patch1 -p1 -b .gcc4 -%patch2 -p1 -b .mtablock -%patch3 -p1 -b .mtablock -%patch4 -p1 -b .mtablock find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -143,16 +128,19 @@ fi %{_libdir}/libamu.so* %changelog -* Sun Jul 31 2005 Florian La Roche -- package all symlinks to libs +* Fri Aug 19 2005 Peter Vrabec 6.1.1-1 +- upgrade 6.1.1 + +* Wed Aug 17 2005 Peter Vrabec 6.0.9-13 +- fix the regression introduced with (#143118) fix * Thu Mar 24 2005 Peter Vrabec 6.0.9-12 --fix the am-utils part of #143118 by implementing the util-linux - mtab locking scheme into am-utils automounter, patch and testing - by Daniel Berrange , improved locking - algorithm by (which allows for several - hundred or even thousand of parallel makes to finish - successfully and keep /etc/mtab in sync with /proc/mounts as well) +- fix the am-utils part of #143118 by implementing the util-linux + mtab locking scheme into am-utils automounter, patch and testing + by Daniel Berrange , improved locking + algorithm by (which allows for several + hundred or even thousand of parallel makes to finish + successfully and keep /etc/mtab in sync with /proc/mounts as well) * Thu Mar 17 2005 Peter Vrabec - rebuild by gcc4 diff --git a/sources b/sources index 06e241e..5794ac2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -1e288b8485c09a126e2bea4029602265 am-utils-6.0.9.tar.gz +d80262aff0f66cac815d963556526257 am-utils-6.1.1.tar.gz From 2bbf03ce59a6a58f7d921e16272313820773e471 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 25 Aug 2005 13:09:15 +0000 Subject: [PATCH 027/157] use generic linux/nfs_mount.h check --- am-utils.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index a4164ea..ba907fd 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.1 -Release: 1 +Release: 2 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -11,6 +11,7 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map +Patch1: am-utils-6.1.1-linuxNfsMountCheck.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -34,6 +35,8 @@ mounting and unmounting filesystems. %prep %setup -q +%patch1 -p1 -b .linuxNfsMountCheck +autoconf find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -128,6 +131,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Aug 25 2005 Peter Vrabec 6.1.1-2 +- use generic linux/nfs_mount.h check + * Fri Aug 19 2005 Peter Vrabec 6.1.1-1 - upgrade 6.1.1 From 6cfe96894cac2c2e94c1eee86723e20cc445c533 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Tue, 27 Sep 2005 17:06:32 +0000 Subject: [PATCH 028/157] specify type option in /default in /etc/amd.net (#11618) --- am-utils.net.map | 4 ++-- am-utils.spec | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/am-utils.net.map b/am-utils.net.map index 9c372a2..a9fb93a 100644 --- a/am-utils.net.map +++ b/am-utils.net.map @@ -1,2 +1,2 @@ -/defaults fs:=${autodir}/${rhost}/root/${rfs};opts:=nosuid,nodev -* rhost:=${key};type:=host;rfs:=/ +/defaults fs:=${autodir}/${rhost}/root/${rfs};type:=host;opts:=nosuid,nodev +* rhost:=${key};rfs:=/ diff --git a/am-utils.spec b/am-utils.spec index ba907fd..11890c3 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.1 -Release: 2 +Release: 3 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -131,6 +131,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Sep 27 2005 Peter Vrabec 6.1.1-3 +- specify type option in /default in /etc/amd.net (#11618) + * Thu Aug 25 2005 Peter Vrabec 6.1.1-2 - use generic linux/nfs_mount.h check From 54935de148238fa372a1e88a731abfcb1e936e4e Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Wed, 5 Oct 2005 16:26:58 +0000 Subject: [PATCH 029/157] - upgrade - fix amd shutdown(#158268,#54246) - enhancement, /host/localhost and /host/ are symlinks to / (#11843) --- .cvsignore | 2 +- am-utils.init | 54 ++++++++++++++++++++++-------------------------- am-utils.net.map | 7 +++++-- am-utils.spec | 17 ++++++++------- sources | 2 +- 5 files changed, 42 insertions(+), 40 deletions(-) diff --git a/.cvsignore b/.cvsignore index d4079c8..c4210b7 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.1.1.tar.gz +am-utils-6.1.2.1.tar.gz diff --git a/am-utils.init b/am-utils.init index 17a858b..2d5a1a8 100755 --- a/am-utils.init +++ b/am-utils.init @@ -36,35 +36,31 @@ start() { } stop() { - echo -n $"Stopping $prog: " - delay=5 - count=10 - i=1 - is_down="nope" - while [ $i != $count ]; do - # run amq - /usr/sbin/amq > /dev/null 2>&1 - if [ $? = 0 ] ; then - # amd is up - /usr/sbin/amq | awk '{print $1}' | xargs -n 1 /usr/sbin/amq -uf - else - # amd is down - is_down="" - break - fi - /usr/sbin/amq > /dev/null 2>&1 - if [ $? != 0 ] ; then - sleep $delay - fi - i=`expr $i + 1` - done - if [ -n "$is_down" ] ; then - killproc $amd - RETVAL=$? - fi - [ $RETVAL = 0 ] && rm -f /var/lock/subsys/amd - echo - return $RETVAL + echo -n $"Stopping $prog: " + killproc $amd -TERM + # this part is from wait4amd2die + delay=3 + count=10 + i=1 + maxcount=`expr $count + 1` + while [ $i != $maxcount ]; do + # run amq + /usr/sbin/amq > /dev/null 2>&1 + RETVAL=$? + if [ $RETVAL != 0 ] + then + # amq failed to run (because amd is dead) + rm -f /var/lock/subsys/amd /var/run/amd.pid + echo + return $RETVAL + fi + sleep $delay + i=`expr $i + 1` + done + failure $"amd shutdown" + echo + echo "amd is still up" + return $RETVAL } # See how we were called. diff --git a/am-utils.net.map b/am-utils.net.map index a9fb93a..2307d9a 100644 --- a/am-utils.net.map +++ b/am-utils.net.map @@ -1,2 +1,5 @@ -/defaults fs:=${autodir}/${rhost}/root/${rfs};type:=host;opts:=nosuid,nodev -* rhost:=${key};rfs:=/ +localhost type:=link;fs:=/ +* host==${key};type:=link;fs:=/ \ + hostd==${key};type:=link;fs:=/ \ + fs:=${autodir}/${rhost}/root/${rfs};type:=host;rhost:=${key};rfs:=/;opts:=nosuid,nodev + diff --git a/am-utils.spec b/am-utils.spec index 11890c3..31a720e 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.1.1 -Release: 3 +Version: 6.1.2.1 +Release: 1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -11,7 +11,7 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Patch1: am-utils-6.1.1-linuxNfsMountCheck.patch +Patch1: am-utils-6.1.2.1-unregAmd.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -35,8 +35,8 @@ mounting and unmounting filesystems. %prep %setup -q -%patch1 -p1 -b .linuxNfsMountCheck -autoconf +%patch1 -p1 -b .unregAmd + find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -131,8 +131,11 @@ fi %{_libdir}/libamu.so* %changelog -* Tue Sep 27 2005 Peter Vrabec 6.1.1-3 -- specify type option in /default in /etc/amd.net (#11618) +* Wed Oct 04 2005 Peter Vrabec 6.1.2.1-1 +- upgrade +- fix amd shutdown(#158268,#54246) +- enhancement, /host/localhost and /host/ + are symlinks to / (#11843) * Thu Aug 25 2005 Peter Vrabec 6.1.1-2 - use generic linux/nfs_mount.h check diff --git a/sources b/sources index 5794ac2..ad4d127 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d80262aff0f66cac815d963556526257 am-utils-6.1.1.tar.gz +ac781b1e7db007c7379a90843e37f229 am-utils-6.1.2.1.tar.gz From f29484a1793c5b22883bb67a95b02266bac6b5fa Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Wed, 5 Oct 2005 19:23:45 +0000 Subject: [PATCH 030/157] use generic linux/nfs_mount.h check again --- am-utils.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/am-utils.spec b/am-utils.spec index 31a720e..d1e7db8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -12,6 +12,7 @@ Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map Patch1: am-utils-6.1.2.1-unregAmd.patch +Patch2: am-utils-6.1.1-linuxNfsMountCheck.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -36,6 +37,8 @@ mounting and unmounting filesystems. %prep %setup -q %patch1 -p1 -b .unregAmd +%patch2 -p1 -b .linuxNfsMountCheck +autoconf find_requires=%{old_find_requires} From 8de6dde77ca4ec23d0528ae4adc1256b8e6b1e9e Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Fri, 21 Oct 2005 07:52:45 +0000 Subject: [PATCH 031/157] upgrade --- .cvsignore | 2 +- am-utils.spec | 11 ++++++----- sources | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.cvsignore b/.cvsignore index c4210b7..135258e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.1.2.1.tar.gz +am-utils-6.1.3.tar.gz diff --git a/am-utils.spec b/am-utils.spec index d1e7db8..384387c 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,6 +1,6 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.1.2.1 +Version: 6.1.3 Release: 1 License: BSD Epoch: 5 @@ -11,8 +11,7 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Patch1: am-utils-6.1.2.1-unregAmd.patch -Patch2: am-utils-6.1.1-linuxNfsMountCheck.patch +Patch1: am-utils-6.1.1-linuxNfsMountCheck.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool Requires: portmap, grep, gawk, findutils @@ -36,8 +35,7 @@ mounting and unmounting filesystems. %prep %setup -q -%patch1 -p1 -b .unregAmd -%patch2 -p1 -b .linuxNfsMountCheck +%patch1 -p1 -b .linuxNfsMountCheck autoconf @@ -134,6 +132,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Oct 20 2005 Peter Vrabec 6.1.3-1 +- upgrade + * Wed Oct 04 2005 Peter Vrabec 6.1.2.1-1 - upgrade - fix amd shutdown(#158268,#54246) diff --git a/sources b/sources index ad4d127..03aa7f6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -ac781b1e7db007c7379a90843e37f229 am-utils-6.1.2.1.tar.gz +6b023c3d5270429f4ce54ee1edea4f8f am-utils-6.1.3.tar.gz From 12b0be64c0e662085b12f80d249ac0a058697e58 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Fri, 9 Dec 2005 22:39:33 +0000 Subject: [PATCH 032/157] gcc update bump --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 384387c..fbe5553 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.3 -Release: 1 +Release: 1.1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -132,6 +132,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Dec 09 2005 Jesse Keating +- rebuilt + * Fri Oct 20 2005 Peter Vrabec 6.1.3-1 - upgrade From 88167e8f5ed91b880b063563e17dd858f939b2f3 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Tue, 7 Feb 2006 10:52:50 +0000 Subject: [PATCH 033/157] bump for new gcc/glibc --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index fbe5553..697fbb8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.3 -Release: 1.1 +Release: 1.2 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -132,6 +132,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Feb 07 2006 Jesse Keating - 5:6.1.3-1.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + * Fri Dec 09 2005 Jesse Keating - rebuilt From 36d5c6d3f0514e631a3d601c4cd1fc6b2da4c43d Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Sat, 11 Feb 2006 01:35:35 +0000 Subject: [PATCH 034/157] bump for bug in double-long on ppc(64) --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 697fbb8..1b6f89d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.3 -Release: 1.2 +Release: 1.2.1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -132,6 +132,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Feb 10 2006 Jesse Keating - 5:6.1.3-1.2.1 +- bump again for double-long bug on ppc(64) + * Tue Feb 07 2006 Jesse Keating - 5:6.1.3-1.2 - rebuilt for new gcc4.1 snapshot and glibc changes From e54489a72a079baf81cc4b50daf7b7e565cad698 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Mon, 29 May 2006 11:26:06 +0000 Subject: [PATCH 035/157] upgrade --- .cvsignore | 2 +- am-utils.spec | 10 +++++++--- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.cvsignore b/.cvsignore index 135258e..417fec6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -am-utils-6.1.3.tar.gz +am-utils-6.1.5.tar.gz diff --git a/am-utils.spec b/am-utils.spec index 1b6f89d..8bdf96f 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils -Version: 6.1.3 -Release: 1.2.1 +Version: 6.1.5 +Release: 1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -13,7 +13,7 @@ Source3: am-utils.sysconf Source4: am-utils.net.map Patch1: am-utils-6.1.1-linuxNfsMountCheck.patch BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool +BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool bison Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd @@ -132,6 +132,10 @@ fi %{_libdir}/libamu.so* %changelog +* Mon May 29 2006 Peter Vrabec 5:6.1.5-1 +- upgrade +- add build depency + * Fri Feb 10 2006 Jesse Keating - 5:6.1.3-1.2.1 - bump again for double-long bug on ppc(64) diff --git a/sources b/sources index 03aa7f6..3f481c7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6b023c3d5270429f4ce54ee1edea4f8f am-utils-6.1.3.tar.gz +bc07514f4316511ace5087b9e6dc3771 am-utils-6.1.5.tar.gz From 8d6531e640a1c8065b69d81cdd1f9376f38f6b56 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Thu, 1 Jun 2006 13:30:44 +0000 Subject: [PATCH 036/157] - force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h check in configure fails on s390x --- am-utils.spec | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 8bdf96f..045eb31 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 1 +Release: 2 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -11,7 +11,6 @@ Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Patch1: am-utils-6.1.1-linuxNfsMountCheck.patch BuildRoot: %{_tmppath}/%{name}-root BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool bison Requires: portmap, grep, gawk, findutils @@ -35,8 +34,6 @@ mounting and unmounting filesystems. %prep %setup -q -%patch1 -p1 -b .linuxNfsMountCheck -autoconf find_requires=%{old_find_requires} @@ -46,7 +43,7 @@ chmod +x find-requires %build %configure \ --enable-shared \ - --enable-am-cflags="$RPM_OPT_FLAGS" \ + --enable-am-cflags="$RPM_OPT_FLAGS -DHAVE_LINUX_NFS_MOUNT_H" \ --enable-libs="-lnsl -lresolv" make %{?_smp_flags} @@ -132,6 +129,10 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Jun 01 2006 Peter Vrabec 5:6.1.5-2 +- force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h + check in configure fails on s390x + * Mon May 29 2006 Peter Vrabec 5:6.1.5-1 - upgrade - add build depency From 45ab90cca31c7c079db69b9730e213711098fc14 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 12 Jul 2006 05:09:10 +0000 Subject: [PATCH 037/157] bumped for rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 045eb31..9f07c68 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 2 +Release: 2.1 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -129,6 +129,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 12 2006 Jesse Keating - 5:6.1.5-2.1 +- rebuild + * Thu Jun 01 2006 Peter Vrabec 5:6.1.5-2 - force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h check in configure fails on s390x From cf557254d3ee31e1ed2ea57ac8097298532556ed Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 12 Jul 2006 20:13:00 +0000 Subject: [PATCH 038/157] fix missing br --- am-utils.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 9f07c68..e904076 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 2.1 +Release: 3 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -12,7 +12,7 @@ Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel autoconf automake libtool bison +BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel, autoconf, automake, libtool, bison, flex Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd @@ -129,8 +129,9 @@ fi %{_libdir}/libamu.so* %changelog -* Wed Jul 12 2006 Jesse Keating - 5:6.1.5-2.1 +* Wed Jul 12 2006 Jesse Keating - 5:6.1.5-3 - rebuild +- Add missing br flex * Thu Jun 01 2006 Peter Vrabec 5:6.1.5-2 - force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h From d2e59be60dfa6a65aa1c9e3e41d8217d0522a869 Mon Sep 17 00:00:00 2001 From: kzak Date: Thu, 24 Aug 2006 14:08:49 +0000 Subject: [PATCH 039/157] - fix critical bug --- am-utils-6.1.5-nfs-version.patch | 27 +++++++++++++++++++++++++++ am-utils-6.1.5-rmtab-temp.patch | 15 +++++++++++++++ am-utils.spec | 13 ++++++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.1.5-nfs-version.patch create mode 100644 am-utils-6.1.5-rmtab-temp.patch diff --git a/am-utils-6.1.5-nfs-version.patch b/am-utils-6.1.5-nfs-version.patch new file mode 100644 index 0000000..a2ce21c --- /dev/null +++ b/am-utils-6.1.5-nfs-version.patch @@ -0,0 +1,27 @@ +--- am-utils-6.1.5/conf/mount/mount_linux.c.kzak 2006-08-24 15:59:24.000000000 +0200 ++++ am-utils-6.1.5/conf/mount/mount_linux.c 2006-08-24 15:59:32.000000000 +0200 +@@ -277,7 +277,7 @@ + int errorcode; + + /* Fake some values for linux */ +- mnt_data->version = NFS_MOUNT_VERSION; ++ mnt_data->version = AMD_NFS_MOUNT_VERSION; + if (!mnt_data->timeo) { + #ifdef MNT2_NFS_OPT_TCP + if (mnt_data->flags & MNT2_NFS_OPT_TCP) +--- am-utils-6.1.5/conf/nfs_prot/nfs_prot_linux.h.kzak 2006-08-24 15:55:02.000000000 +0200 ++++ am-utils-6.1.5/conf/nfs_prot/nfs_prot_linux.h 2006-08-24 15:58:27.000000000 +0200 +@@ -241,6 +241,13 @@ + u_char data[FHSIZE3]; + }; + ++/* version of our nsf_mount_data struct ++ * -- we cannot use NFS_MOUNT_VERSION from system kernel ++ * headers, because there could version that doesn't ++ * match with nfs_args struct. ++ */ ++#define AMD_NFS_MOUNT_VERSION 4 ++ + struct nfs_args { + int version; /* 1 */ + int fd; /* 1 */ diff --git a/am-utils-6.1.5-rmtab-temp.patch b/am-utils-6.1.5-rmtab-temp.patch new file mode 100644 index 0000000..64ef7ed --- /dev/null +++ b/am-utils-6.1.5-rmtab-temp.patch @@ -0,0 +1,15 @@ +diff -ur am-utils-6.1.5.orig/scripts/fixrmtab.in am-utils-6.1.5/scripts/fixrmtab.in +--- am-utils-6.1.5.orig/scripts/fixrmtab.in 2006-08-18 16:24:53.000000000 -0400 ++++ am-utils-6.1.5/scripts/fixrmtab.in 2006-08-18 16:31:12.000000000 -0400 +@@ -11,7 +11,10 @@ + #set -x + + RMTAB=/etc/rmtab +-TMP=/tmp/rmtab.$$ ++TMP=`mktemp /tmp/rmtab.XXXXXXXX` ++if [ x"$TMP" = "x" ] ; then ++ exit 1 ++fi + + if [ ! -f /etc/rmtab ]; then + exit 0 diff --git a/am-utils.spec b/am-utils.spec index e904076..11053c8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 3 +Release: 4 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -17,6 +17,11 @@ Requires: portmap, grep, gawk, findutils Prereq: /sbin/install-info, /sbin/chkconfig, grep Obsoletes: amd +# 203193 - tmpfile usage +Patch1: am-utils-6.1.5-rmtab-temp.patch +# 202180 - amd service doesn't work +Patch2: am-utils-6.1.5-nfs-version.patch + # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 %define old_find_requires %{__find_requires} @@ -35,6 +40,8 @@ mounting and unmounting filesystems. %prep %setup -q +%patch1 -p1 +%patch2 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -129,6 +136,10 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Aug 24 2006 Karel Zak 5:6.1.5-4 +- fix #203193 - tmpfile usage +- fix #202180 - amd service doesn't work + * Wed Jul 12 2006 Jesse Keating - 5:6.1.5-3 - rebuild - Add missing br flex From a6c241bdf0790177cb0816ffca8733aa32402694 Mon Sep 17 00:00:00 2001 From: kzak Date: Mon, 18 Dec 2006 21:07:41 +0000 Subject: [PATCH 040/157] - fix #219437 - amd: stopping service will pop up an error dialog in system-config-services app. - fix build (m4 stuff) of the package (UTS_RELEASE macro has been removed from the latest kernel-headers) - Resolves: rhbz#219437 --- am-utils-6.1.5-UTS_RELEASE.patch | 17 +++++++++++++++++ am-utils.init | 7 +++---- am-utils.spec | 12 +++++++++++- 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 am-utils-6.1.5-UTS_RELEASE.patch diff --git a/am-utils-6.1.5-UTS_RELEASE.patch b/am-utils-6.1.5-UTS_RELEASE.patch new file mode 100644 index 0000000..13b0113 --- /dev/null +++ b/am-utils-6.1.5-UTS_RELEASE.patch @@ -0,0 +1,17 @@ +--- am-utils-6.1.5/m4/macros/linux_headers.m4.kzak 2005-02-19 22:38:58.000000000 +0100 ++++ am-utils-6.1.5/m4/macros/linux_headers.m4 2006-12-18 21:28:04.000000000 +0100 +@@ -14,7 +14,14 @@ + ], + [ + if (argc > 1) ++#ifdef UTS_RELEASE + printf("%s", UTS_RELEASE); ++#else ++# define AMU_MA(a) ((a) >> 16) ++# define AMU_MI(a) (((a) & 0xffff) >> 8) ++# define AMU_PL(a) ((a) & 0xff) ++ printf("%d.%d.%d", AMU_MA(LINUX_VERSION_CODE), AMU_MI(LINUX_VERSION_CODE), AMU_PL(LINUX_VERSION_CODE)); ++#endif + ], + [ host_header_version=$value ], + [ echo diff --git a/am-utils.init b/am-utils.init index 2d5a1a8..f508817 100755 --- a/am-utils.init +++ b/am-utils.init @@ -46,13 +46,12 @@ stop() { while [ $i != $maxcount ]; do # run amq /usr/sbin/amq > /dev/null 2>&1 - RETVAL=$? - if [ $RETVAL != 0 ] + if [ $? != 0 ] then # amq failed to run (because amd is dead) rm -f /var/lock/subsys/amd /var/run/amd.pid echo - return $RETVAL + return 0 fi sleep $delay i=`expr $i + 1` @@ -60,7 +59,7 @@ stop() { failure $"amd shutdown" echo echo "amd is still up" - return $RETVAL + return 1 } # See how we were called. diff --git a/am-utils.spec b/am-utils.spec index 11053c8..544abd6 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 4 +Release: 5 License: BSD Epoch: 5 Group: System Environment/Daemons @@ -21,6 +21,8 @@ Obsoletes: amd Patch1: am-utils-6.1.5-rmtab-temp.patch # 202180 - amd service doesn't work Patch2: am-utils-6.1.5-nfs-version.patch +# UTS_RELEASE macro has been removed from the latest kernel +Patch3: am-utils-6.1.5-UTS_RELEASE.patch # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -42,12 +44,14 @@ mounting and unmounting filesystems. %patch1 -p1 %patch2 -p1 +%patch3 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires chmod +x find-requires %build +./bootstrap %configure \ --enable-shared \ --enable-am-cflags="$RPM_OPT_FLAGS -DHAVE_LINUX_NFS_MOUNT_H" \ @@ -136,6 +140,12 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Dec 18 2006 Karel Zak 5:6.1.5-5 +- fix #219437 - amd: stopping service will pop up an error dialog in + system-config-services app. +- fix build (m4 stuff) of the package (UTS_RELEASE macro has been removed + from the latest kernel-headers) + * Tue Aug 24 2006 Karel Zak 5:6.1.5-4 - fix #203193 - tmpfile usage - fix #202180 - amd service doesn't work From 0c2a860121bd264cc6352fa2ec623e867f27a2c1 Mon Sep 17 00:00:00 2001 From: kzak Date: Tue, 13 Mar 2007 15:26:34 +0000 Subject: [PATCH 041/157] - fix #223675 - am-utils: non-failsafe install-info - fix #231843 - missing build dependency on tcp_wrappers - cleanup spec file - Resolves: rhbz#223675 rhbz#231843 --- am-utils.spec | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 544abd6..0532473 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,20 +1,41 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 5 +Release: 6%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons -URL: http://am-utils.org/ +URL: http://am-utils.org + Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{version}.tar.gz Source1: am-utils.init Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -BuildRoot: %{_tmppath}/%{name}-root -BuildPrereq: gdbm-devel, hesiod-devel, openldap-devel, autoconf, automake, libtool, bison, flex -Requires: portmap, grep, gawk, findutils -Prereq: /sbin/install-info, /sbin/chkconfig, grep + +Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: gdbm-devel +BuildRequires: hesiod-devel +BuildRequires: openldap-devel +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: bison +BuildRequires: flex +BuildRequires: tcp_wrappers-devel + +Requires: portmap +Requires: grep +Requires: gawk +Requires: findutils + +Requires(pre): /bin/grep +Requires(post): /sbin/install-info +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/install-info +Requires(preun): /sbin/chkconfig + Obsoletes: amd # 203193 - tmpfile usage @@ -107,11 +128,15 @@ fi %post /sbin/ldconfig /sbin/chkconfig --add amd -/sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir +if [ -f %{_infodir}/am-utils.info.gz ]; then + /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : +fi %preun if [ $1 -eq 0 ]; then - /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir + if [ -f %{_infodir}/am-utils.info.gz ]; then + /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : + fi /sbin/service amd stop >/dev/null 2>&1 /sbin/chkconfig --del amd fi @@ -140,6 +165,11 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Mar 13 2007 Karel Zak 5:6.1.5-6 +- fix #223675 - am-utils: non-failsafe install-info +- fix #231843 - missing build dependency on tcp_wrappers +- cleanup spec file + * Mon Dec 18 2006 Karel Zak 5:6.1.5-5 - fix #219437 - amd: stopping service will pop up an error dialog in system-config-services app. From 5b9498871c2f9acba4b3916990c434dc8f550437 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Mon, 15 Oct 2007 18:35:34 +0000 Subject: [PATCH 042/157] makefile update to properly grab makefile.common --- Makefile | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7dcaf1f..b98ec28 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,21 @@ # Makefile for source rpm: am-utils -# $Id$ +# $Id: Makefile,v 1.1 2004/09/09 02:55:12 cvsdist Exp $ NAME := am-utils SPECFILE = $(firstword $(wildcard *.spec)) -include ../common/Makefile.common +define find-makefile-common +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +endef + +MAKEFILE_COMMON := $(shell $(find-makefile-common)) + +ifeq ($(MAKEFILE_COMMON),) +# attempt a checkout +define checkout-makefile-common +test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 +endef + +MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) +endif + +include $(MAKEFILE_COMMON) From 2ab111c6ab2afe343e7f8751818e6058140c132b Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 5 Dec 2007 21:41:48 +0000 Subject: [PATCH 043/157] - Rebuild for deps --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 0532473..fe47b50 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 6%{?dist} +Release: 7%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -165,6 +165,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Dec 05 2007 Release Engineering - 6.1.5-7 + - Rebuild for deps + * Tue Mar 13 2007 Karel Zak 5:6.1.5-6 - fix #223675 - am-utils: non-failsafe install-info - fix #231843 - missing build dependency on tcp_wrappers From bb7934916245d34bf40c72987cb6852e9f716a23 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Tue, 19 Feb 2008 10:32:26 +0000 Subject: [PATCH 044/157] - Autorebuild for GCC 4.3 --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index fe47b50..cd09f6c 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd. Name: am-utils Version: 6.1.5 -Release: 7%{?dist} +Release: 8%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -165,6 +165,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Feb 19 2008 Fedora Release Engineering - 5:6.1.5-8 +- Autorebuild for GCC 4.3 + * Wed Dec 05 2007 Release Engineering - 6.1.5-7 - Rebuild for deps From 80e5a6c16110701f19bf8f254fdc81ba6cfe4a8e Mon Sep 17 00:00:00 2001 From: kzak Date: Tue, 20 May 2008 13:24:33 +0000 Subject: [PATCH 045/157] - spec file cleanup according to rpmlint --- am-utils.spec | 124 ++++++++++++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index cd09f6c..b1c09d2 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ -Summary: Automount utilities including an updated version of Amd. +Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 8%{?dist} +Release: 9%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -36,8 +36,6 @@ Requires(post): /sbin/chkconfig Requires(preun): /sbin/install-info Requires(preun): /sbin/chkconfig -Obsoletes: amd - # 203193 - tmpfile usage Patch1: am-utils-6.1.5-rmtab-temp.patch # 202180 - amd service doesn't work @@ -51,11 +49,11 @@ Patch3: am-utils-6.1.5-UTS_RELEASE.patch %description Am-utils includes an updated version of Amd, the popular BSD -automounter. An automounter is a program which maintains a cache -of mounted filesystems. Filesystems are mounted when they are -first referenced by the user and unmounted after a certain period of -inactivity. Amd supports a variety of filesystems, including NFS, UFS, -CD-ROMS and local drives. +automounter. An automounter is a program which maintains a cache +of mounted filesystems. Filesystems are mounted when they are +first referenced by the user and unmounted after a certain period of +inactivity. Amd supports a variety of filesystems, including NFS, UFS, +CD-ROMS and local drives. You should install am-utils if you need a program for automatically mounting and unmounting filesystems. @@ -74,55 +72,60 @@ chmod +x find-requires %build ./bootstrap %configure \ - --enable-shared \ - --enable-am-cflags="$RPM_OPT_FLAGS -DHAVE_LINUX_NFS_MOUNT_H" \ - --enable-libs="-lnsl -lresolv" + --enable-shared \ + --enable-am-cflags="${RPM_OPT_FLAGS} -DHAVE_LINUX_NFS_MOUNT_H" \ + --enable-libs="-lnsl -lresolv" + +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + make %{?_smp_flags} %install -rm -rf $RPM_BUILD_ROOT +rm -rf ${RPM_BUILD_ROOT} %makeinstall -mkdir -p $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d} -install -m 644 $RPM_SOURCE_DIR/am-utils.sysconf $RPM_BUILD_ROOT/etc/sysconfig/amd -#install -m 755 scripts/redhat-ctl-amd $RPM_BUILD_ROOT/etc/rc.d/init.d/amd -install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd -gzip -q9f $RPM_BUILD_ROOT/%{_infodir}/*info* -mkdir -p $RPM_BUILD_ROOT/.automount -rm -f $RPM_BUILD_ROOT/usr/sbin/ctl-amd + +mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/{rc.d/init.d,sysconfig} + +install -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_sysconfdir}/rc.d/init.d/amd +install -m 600 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf +install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig/amd +install -m 640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.net + +gzip -q9f ${RPM_BUILD_ROOT}/%{_infodir}/*info* +mkdir -p ${RPM_BUILD_ROOT}/.automount + +rm -f ${RPM_BUILD_ROOT}/usr/sbin/ctl-amd # add symlinks to shared libs -/sbin/ldconfig -n $RPM_BUILD_ROOT/%{_libdir} +/sbin/ldconfig -n ${RPM_BUILD_ROOT}/%{_libdir} -# install the default config and map files -install -m 600 %{SOURCE2} $RPM_BUILD_ROOT/etc/amd.conf -install -m 640 %{SOURCE4} $RPM_BUILD_ROOT/etc/amd.net +# deprecated files +for I in %{_libdir}/libamu.a \ + %{_libdir}/libamu.la \ + %{_libdir}/libamu.so \ + %{_infodir}/dir \ + %{_sysconfdir}/amd.conf-sample \ + %{_sysconfdir}/lostaltmail.conf-sample; do -# We don't build a -devel package. -rm -f $RPM_BUILD_ROOT/%{_libdir}/libamu.a -rm -f $RPM_BUILD_ROOT/%{_libdir}/libamu.la - -# We don't include the info directory. -rm -f $RPM_BUILD_ROOT/%{_infodir}/dir - -# Remove the other sample config file. -rm -f $RPM_BUILD_ROOT/etc/amd.conf-sample -rm -f $RPM_BUILD_ROOT/etc/lostaltmail.conf-sample + rm -f $RPM_BUILD_ROOT$I +done %clean -rm -rf $RPM_BUILD_ROOT +rm -rf ${RPM_BUILD_ROOT} %define __find_requires %{_builddir}/%{name}-%{version}/find-requires %pre # Check if we have an old fashioned amd.conf and rename if to amd.net -if test "$1" -ne 0 -then if test -r /etc/amd.conf - then if grep -v -q "auto_dir" /etc/amd.conf - then if test ! -e /etc/amd.net - then mv -f /etc/amd.conf /etc/amd.net - fi - fi - fi +if test "$1" -ne 0; then + if test -r /etc/amd.conf; then + if grep -v -q "auto_dir" /etc/amd.conf; then + if test ! -e /etc/amd.net; then + mv -f /etc/amd.conf /etc/amd.net + fi + fi + fi fi %post @@ -135,7 +138,7 @@ fi %preun if [ $1 -eq 0 ]; then if [ -f %{_infodir}/am-utils.info.gz ]; then - /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : + /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi /sbin/service amd stop >/dev/null 2>&1 /sbin/chkconfig --del amd @@ -157,14 +160,17 @@ fi %{_mandir}/man[58]/* %{_mandir}/man1/expn.1* %{_mandir}/man1/pawd.1* -%config(noreplace) /etc/amd.net -%config(noreplace) /etc/amd.conf -%config(noreplace) /etc/sysconfig/amd -%config /etc/rc.d/init.d/amd +%config(noreplace) %{_sysconfdir}/amd.net +%config(noreplace) %{_sysconfdir}/amd.conf +%config(noreplace) %{_sysconfdir}/sysconfig/amd +%{_sysconfdir}/rc.d/init.d/amd %{_infodir}/*info*.gz %{_libdir}/libamu.so* %changelog +* Tue May 20 2008 Karel Zak 5:6.1.5-9 +- spec file cleanup according to rpmlint + * Tue Feb 19 2008 Fedora Release Engineering - 5:6.1.5-8 - Autorebuild for GCC 4.3 @@ -191,11 +197,11 @@ fi - Add missing br flex * Thu Jun 01 2006 Peter Vrabec 5:6.1.5-2 -- force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h +- force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h check in configure fails on s390x * Mon May 29 2006 Peter Vrabec 5:6.1.5-1 -- upgrade +- upgrade - add build depency * Fri Feb 10 2006 Jesse Keating - 5:6.1.3-1.2.1 @@ -212,8 +218,8 @@ fi * Wed Oct 04 2005 Peter Vrabec 6.1.2.1-1 - upgrade -- fix amd shutdown(#158268,#54246) -- enhancement, /host/localhost and /host/ +- fix amd shutdown(#158268,#54246) +- enhancement, /host/localhost and /host/ are symlinks to / (#11843) * Thu Aug 25 2005 Peter Vrabec 6.1.1-2 @@ -229,15 +235,15 @@ fi - fix the am-utils part of #143118 by implementing the util-linux mtab locking scheme into am-utils automounter, patch and testing by Daniel Berrange , improved locking - algorithm by (which allows for several - hundred or even thousand of parallel makes to finish + algorithm by (which allows for several + hundred or even thousand of parallel makes to finish successfully and keep /etc/mtab in sync with /proc/mounts as well) - + * Thu Mar 17 2005 Peter Vrabec - rebuild by gcc4 * Tue Oct 12 2004 Adrian Havill 6.0.9-10 -- cleanup %pre script so amd.conf won't get stat()ed if it doesn't +- cleanup %%pre script so amd.conf won't get stat()ed if it doesn't exist (#126656) * Wed Sep 1 2004 Nalin Dahyabhai 6.0.9-9 @@ -408,7 +414,7 @@ fi - add amd.net file as the default config map file - change the config file to teh new config file format instead of a simple map file name. -- try to avoid some damage with a new %pre script +- try to avoid some damage with a new %%pre script - prereq grep now - modify the init file so it calls amd -F /etc/amd.conf now @@ -419,7 +425,7 @@ fi - don't run by default * Mon May 31 1999 Kenneth Skaar -- Fixed amd -F core dump and related dumps by other programs +- Fixed amd -F core dump and related dumps by other programs * Thu Apr 08 1999 Preston Brown - kill -HUP on reload, restart does a real restart. @@ -431,7 +437,7 @@ fi - version 6.0 proper - Serial:1 because to enforce versioning -* Sun Mar 21 1999 Cristian Gafton +* Sun Mar 21 1999 Cristian Gafton - auto rebuild in the new build environment (release 6) * Wed Jan 06 1999 Cristian Gafton From 1c853575b44461028f5bfa176ba4cf8d27193a21 Mon Sep 17 00:00:00 2001 From: kzak Date: Tue, 20 May 2008 22:40:45 +0000 Subject: [PATCH 046/157] - spec file cleanup according to rpmlint - fix autotools stuff --- am-utils-6.1.5-buildsys.patch | 84 +++++++++++++++++++++++++++++++++++ am-utils.spec | 4 ++ 2 files changed, 88 insertions(+) create mode 100644 am-utils-6.1.5-buildsys.patch diff --git a/am-utils-6.1.5-buildsys.patch b/am-utils-6.1.5-buildsys.patch new file mode 100644 index 0000000..f02c654 --- /dev/null +++ b/am-utils-6.1.5-buildsys.patch @@ -0,0 +1,84 @@ +diff -up am-utils-6.1.5/bootstrap.kzak am-utils-6.1.5/bootstrap +--- am-utils-6.1.5/bootstrap.kzak 2003-10-11 08:02:04.000000000 +0200 ++++ am-utils-6.1.5/bootstrap 2008-05-21 00:23:08.000000000 +0200 +@@ -29,7 +29,9 @@ rm -fr autom4te.cache autom4te-*.cache + echo "AMU: prepare acinclude.m4..." + test -f acinclude.m4 && mv -f acinclude.m4 acinclude.m4.old + (cd m4/macros +- for i in HEADER *.m4; do ++ cat HEADER ++ cat libtool.m4 ++ for i in $(ls *.m4 | sed 's/libtool.m4//'); do + cat $i + echo + echo +@@ -37,6 +39,18 @@ test -f acinclude.m4 && mv -f acinclude. + cat TRAILER + ) > acinclude.m4 + ++rm -f aclocal.m4 aclocal.m4.old ++ ++# generate libtoolize stuff ++echo "AMU: libtoolize..." ++libtoolize --version 2>&1 | head -1 ++if libtoolize --force ; then ++ : ++else ++ echo "libtoolize command failed. fix errors and rerun $0." ++ exit 2 ++fi ++ + # generate aclocal.m4 file + echo "AMU: aclocal..." + test -f aclocal.m4 && mv -f aclocal.m4 aclocal.m4.old +@@ -49,6 +63,8 @@ else + exit 2 + fi + ++ ++ + # produce new configure.in (temp) script + echo "AMU: autoconf..." + # show version +diff -up am-utils-6.1.5/m4/macros/save_state.m4.kzak am-utils-6.1.5/m4/macros/save_state.m4 +--- am-utils-6.1.5/m4/macros/save_state.m4.kzak 2002-01-07 08:36:24.000000000 +0100 ++++ am-utils-6.1.5/m4/macros/save_state.m4 2008-05-20 23:59:09.000000000 +0200 +@@ -1,12 +1,12 @@ + dnl ###################################################################### + dnl AC_SAVE_STATE: save confdefs.h onto dbgcf.h and write $ac_cv_* cache + dnl variables that are known so far. +-define(AMU_SAVE_STATE, +-AC_MSG_NOTICE(*** SAVING CONFIGURE STATE ***) ++define([AMU_SAVE_STATE], ++[AC_MSG_NOTICE(*** SAVING CONFIGURE STATE ***) + if test -f confdefs.h + then + cp confdefs.h dbgcf.h + fi +-[AC_CACHE_SAVE] ++AC_CACHE_SAVE] + ) + dnl ====================================================================== +diff -up am-utils-6.1.5/m4/macros/cache_check_dynamic.m4.kzak am-utils-6.1.5/m4/macros/cache_check_dynamic.m4 +--- am-utils-6.1.5/m4/macros/cache_check_dynamic.m4.kzak 2008-05-21 00:30:15.000000000 +0200 ++++ am-utils-6.1.5/m4/macros/cache_check_dynamic.m4 2008-05-21 00:29:38.000000000 +0200 +@@ -8,7 +8,7 @@ dnl after COMMANDS are run. + dnl + dnl ====================================================================== + dnl AMU_CACHE_CHECK_DYNAMIC(MESSAGE, CACHE-ID, COMMANDS) +-define(AMU_CACHE_CHECK_DYNAMIC, ++define([AMU_CACHE_CHECK_DYNAMIC], + [ + ac_tmp=`echo $2` + if eval "test \"`echo '$''{'$ac_tmp'+set}'`\" = set"; then +diff -up am-utils-6.1.5/m4/macros/mount_headers.m4.kzak am-utils-6.1.5/m4/macros/mount_headers.m4 +--- am-utils-6.1.5/m4/macros/mount_headers.m4.kzak 2008-05-21 00:30:08.000000000 +0200 ++++ am-utils-6.1.5/m4/macros/mount_headers.m4 2008-05-21 00:29:53.000000000 +0200 +@@ -1,6 +1,6 @@ + dnl ###################################################################### + dnl an M4 macro to include a list of common headers being used everywhere +-define(AMU_MOUNT_HEADERS, ++define([AMU_MOUNT_HEADERS], + [ + #include "${srcdir}/include/mount_headers1.h" + #include AMU_NFS_PROTOCOL_HEADER diff --git a/am-utils.spec b/am-utils.spec index b1c09d2..6ecb3c5 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -42,6 +42,8 @@ Patch1: am-utils-6.1.5-rmtab-temp.patch Patch2: am-utils-6.1.5-nfs-version.patch # UTS_RELEASE macro has been removed from the latest kernel Patch3: am-utils-6.1.5-UTS_RELEASE.patch +# Build system bugfixes +Patch4: am-utils-6.1.5-buildsys.patch # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -64,6 +66,7 @@ mounting and unmounting filesystems. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -170,6 +173,7 @@ fi %changelog * Tue May 20 2008 Karel Zak 5:6.1.5-9 - spec file cleanup according to rpmlint +- fix autotools stuff * Tue Feb 19 2008 Fedora Release Engineering - 5:6.1.5-8 - Autorebuild for GCC 4.3 From c0e4ddff98be60da9ca46d17a2cfed40c71ddedf Mon Sep 17 00:00:00 2001 From: kzak Date: Wed, 21 May 2008 19:20:26 +0000 Subject: [PATCH 047/157] - spec file cleanup according to rpmlint - fix autotools stuff --- am-utils-6.1.5-buildsys.patch | 131 ++++++++++++++++++++++------------ am-utils.spec | 2 +- 2 files changed, 86 insertions(+), 47 deletions(-) diff --git a/am-utils-6.1.5-buildsys.patch b/am-utils-6.1.5-buildsys.patch index f02c654..09d4a17 100644 --- a/am-utils-6.1.5-buildsys.patch +++ b/am-utils-6.1.5-buildsys.patch @@ -1,55 +1,77 @@ -diff -up am-utils-6.1.5/bootstrap.kzak am-utils-6.1.5/bootstrap ---- am-utils-6.1.5/bootstrap.kzak 2003-10-11 08:02:04.000000000 +0200 -+++ am-utils-6.1.5/bootstrap 2008-05-21 00:23:08.000000000 +0200 -@@ -29,7 +29,9 @@ rm -fr autom4te.cache autom4te-*.cache +diff -up am-utils-6.1.new/bootstrap.kzak am-utils-6.1.new/bootstrap +--- am-utils-6.1.new/bootstrap.kzak 2003-10-11 08:02:04.000000000 +0200 ++++ am-utils-6.1.new/bootstrap 2008-05-21 12:16:36.000000000 +0200 +@@ -28,21 +28,13 @@ rm -fr autom4te.cache autom4te-*.cache + # generate acinclude.m4 file echo "AMU: prepare acinclude.m4..." test -f acinclude.m4 && mv -f acinclude.m4 acinclude.m4.old - (cd m4/macros +-(cd m4/macros - for i in HEADER *.m4; do -+ cat HEADER -+ cat libtool.m4 -+ for i in $(ls *.m4 | sed 's/libtool.m4//'); do - cat $i - echo - echo -@@ -37,6 +39,18 @@ test -f acinclude.m4 && mv -f acinclude. - cat TRAILER - ) > acinclude.m4 +- cat $i +- echo +- echo +- done +- cat TRAILER +-) > acinclude.m4 -+rm -f aclocal.m4 aclocal.m4.old -+ -+# generate libtoolize stuff -+echo "AMU: libtoolize..." -+libtoolize --version 2>&1 | head -1 -+if libtoolize --force ; then -+ : -+else -+ echo "libtoolize command failed. fix errors and rerun $0." -+ exit 2 -+fi -+ # generate aclocal.m4 file echo "AMU: aclocal..." test -f aclocal.m4 && mv -f aclocal.m4 aclocal.m4.old -@@ -49,6 +63,8 @@ else - exit 2 - fi - -+ -+ - # produce new configure.in (temp) script - echo "AMU: autoconf..." # show version -diff -up am-utils-6.1.5/m4/macros/save_state.m4.kzak am-utils-6.1.5/m4/macros/save_state.m4 ---- am-utils-6.1.5/m4/macros/save_state.m4.kzak 2002-01-07 08:36:24.000000000 +0100 -+++ am-utils-6.1.5/m4/macros/save_state.m4 2008-05-20 23:59:09.000000000 +0200 + aclocal --version 2>&1 | head -1 +-if aclocal ; then ++if aclocal -I m4/macros ; then + : + else + echo "aclocal command failed. fix errors and rerun $0." +@@ -60,7 +52,7 @@ autoconf configure.in > configure.new 2> + CUTWARNMSG1="warning: AC_PROG_LEX invoked multiple times|do not use m4_(patsubst|regexp):" + egrep -v "${CUTWARNMSG1}" ${LOG} > ${LOG}.new + mv ${LOG}.new ${LOG} +-if test -s ${LOG}; then ++if false && test -s ${LOG}; then + echo "AUTOCONF ERRORS (MUST FIX):" + cat ${LOG} + rm -f ${LOG} +@@ -80,7 +72,7 @@ autoheader configure.in > config.h.in 2> + CUTWARNMSG2="autoheader: \`config.h.in' is updated" + egrep -v "${CUTWARNMSG2}" ${LOG} > ${LOG}.new + mv ${LOG}.new ${LOG} +-if test -s ${LOG}; then ++if false && test -s ${LOG}; then + echo "AUTOHEADER ERRORS (MUST FIX):" + cat ${LOG} + rm -f ${LOG} +diff -up am-utils-6.1.new/configure.in.kzak am-utils-6.1.new/configure.in +--- am-utils-6.1.new/configure.in.kzak 2006-05-11 19:25:47.000000000 +0200 ++++ am-utils-6.1.new/configure.in 2008-05-21 20:52:48.000000000 +0200 +@@ -15,6 +15,7 @@ dnl new init style: PACKAGE, VERSION, BU + AC_INIT([am-utils], + sinclude([vers.m4]), + [https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) ++ + AC_MSG_NOTICE(*** INITIALIZATION ***) + AC_CONFIG_SRCDIR([amd/amd.c]) + AM_CONFIG_HEADER(config.h) +@@ -1286,6 +1287,8 @@ AMU_CHECK_LIBWRAP_SEVERITY + fi + dnl ====================================================================== + ++AMU_HDR_TEMPLATES ++ + dnl ********* + AMU_SAVE_STATE + dnl ********* +diff -up am-utils-6.1.new/m4/macros/save_state.m4.kzak am-utils-6.1.new/m4/macros/save_state.m4 +--- am-utils-6.1.new/m4/macros/save_state.m4.kzak 2002-01-07 08:36:24.000000000 +0100 ++++ am-utils-6.1.new/m4/macros/save_state.m4 2008-05-21 12:16:36.000000000 +0200 @@ -1,12 +1,12 @@ dnl ###################################################################### dnl AC_SAVE_STATE: save confdefs.h onto dbgcf.h and write $ac_cv_* cache dnl variables that are known so far. -define(AMU_SAVE_STATE, -AC_MSG_NOTICE(*** SAVING CONFIGURE STATE ***) -+define([AMU_SAVE_STATE], ++AC_DEFUN([AMU_SAVE_STATE], +[AC_MSG_NOTICE(*** SAVING CONFIGURE STATE ***) if test -f confdefs.h then @@ -59,26 +81,43 @@ diff -up am-utils-6.1.5/m4/macros/save_state.m4.kzak am-utils-6.1.5/m4/macros/sa +AC_CACHE_SAVE] ) dnl ====================================================================== -diff -up am-utils-6.1.5/m4/macros/cache_check_dynamic.m4.kzak am-utils-6.1.5/m4/macros/cache_check_dynamic.m4 ---- am-utils-6.1.5/m4/macros/cache_check_dynamic.m4.kzak 2008-05-21 00:30:15.000000000 +0200 -+++ am-utils-6.1.5/m4/macros/cache_check_dynamic.m4 2008-05-21 00:29:38.000000000 +0200 +diff -up am-utils-6.1.new/m4/macros/cache_check_dynamic.m4.kzak am-utils-6.1.new/m4/macros/cache_check_dynamic.m4 +--- am-utils-6.1.new/m4/macros/cache_check_dynamic.m4.kzak 2002-06-21 19:12:14.000000000 +0200 ++++ am-utils-6.1.new/m4/macros/cache_check_dynamic.m4 2008-05-21 12:16:36.000000000 +0200 @@ -8,7 +8,7 @@ dnl after COMMANDS are run. dnl dnl ====================================================================== dnl AMU_CACHE_CHECK_DYNAMIC(MESSAGE, CACHE-ID, COMMANDS) -define(AMU_CACHE_CHECK_DYNAMIC, -+define([AMU_CACHE_CHECK_DYNAMIC], ++AC_DEFUN([AMU_CACHE_CHECK_DYNAMIC], [ ac_tmp=`echo $2` if eval "test \"`echo '$''{'$ac_tmp'+set}'`\" = set"; then -diff -up am-utils-6.1.5/m4/macros/mount_headers.m4.kzak am-utils-6.1.5/m4/macros/mount_headers.m4 ---- am-utils-6.1.5/m4/macros/mount_headers.m4.kzak 2008-05-21 00:30:08.000000000 +0200 -+++ am-utils-6.1.5/m4/macros/mount_headers.m4 2008-05-21 00:29:53.000000000 +0200 +diff -up am-utils-6.1.new/m4/macros/header_templates.m4.kzak am-utils-6.1.new/m4/macros/header_templates.m4 +--- am-utils-6.1.new/m4/macros/header_templates.m4.kzak 2005-10-26 05:33:12.000000000 +0200 ++++ am-utils-6.1.new/m4/macros/header_templates.m4 2008-05-21 20:37:28.000000000 +0200 +@@ -1,5 +1,7 @@ + dnl FILE: m4/macros/header_templates.m4 + dnl defines descriptions for various am-utils specific macros ++AC_DEFUN([AMU_HDR_TEMPLATES], ++[ + + AH_TEMPLATE([HAVE_AMU_FS_AUTO], + [Define if have automount filesystem]) +@@ -997,3 +999,5 @@ AH_TEMPLATE([NEED_LIBWRAP_SEVERITY_VARIA + + AH_TEMPLATE([HAVE_EXTERN_LDAP_ENABLE_CACHE], + [does extern definition for ldap_enable_cache() exist?]) ++ ++]) +diff -up am-utils-6.1.new/m4/macros/mount_headers.m4.kzak am-utils-6.1.new/m4/macros/mount_headers.m4 +--- am-utils-6.1.new/m4/macros/mount_headers.m4.kzak 2002-01-07 08:36:23.000000000 +0100 ++++ am-utils-6.1.new/m4/macros/mount_headers.m4 2008-05-21 12:16:36.000000000 +0200 @@ -1,6 +1,6 @@ dnl ###################################################################### dnl an M4 macro to include a list of common headers being used everywhere -define(AMU_MOUNT_HEADERS, -+define([AMU_MOUNT_HEADERS], ++AC_DEFUN([AMU_MOUNT_HEADERS], [ #include "${srcdir}/include/mount_headers1.h" #include AMU_NFS_PROTOCOL_HEADER diff --git a/am-utils.spec b/am-utils.spec index 6ecb3c5..e8b11cd 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -66,7 +66,7 @@ mounting and unmounting filesystems. %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 +%patch4 -p1 -b .kzak find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires From ff776e743d0dacb58675b98d7c9e4c1276f00076 Mon Sep 17 00:00:00 2001 From: kzak Date: Thu, 29 May 2008 10:52:22 +0000 Subject: [PATCH 048/157] - fix #435420 - CVE-2008-1078 am-utils: insecure usage of temporary files --- am-utils-6.1.5-expn-temp.patch | 26 ++++++++++++++++++++++++++ am-utils.spec | 10 ++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 am-utils-6.1.5-expn-temp.patch diff --git a/am-utils-6.1.5-expn-temp.patch b/am-utils-6.1.5-expn-temp.patch new file mode 100644 index 0000000..a2f1b94 --- /dev/null +++ b/am-utils-6.1.5-expn-temp.patch @@ -0,0 +1,26 @@ + +CVE-2008-1078 am-utils: insecure usage of temporary files + +Addresses-Red-Hat-Bugzilla: #435420 +Signed-off-by: Karel Zak + +diff -up am-utils-6.1.5/scripts/expn.in.kzak am-utils-6.1.5/scripts/expn.in +--- am-utils-6.1.5/scripts/expn.in.kzak 2008-05-29 12:43:19.000000000 +0200 ++++ am-utils-6.1.5/scripts/expn.in 2008-05-29 12:44:20.000000000 +0200 +@@ -9,6 +9,7 @@ + # hardcoded constants, should work fine for BSD-based systems + #require 'sys/socket.ph'; # perl 4 + use Socket; # perl 5 ++use Fcntl + $AF_INET = &AF_INET; + $SOCK_STREAM = &SOCK_STREAM; + +@@ -1009,7 +1010,7 @@ sub mxlookup + } + + $0 = "$av0 - nslookup of $server"; +- open(T,">/tmp/expn$$") || die "open > /tmp/expn$$: $!\n"; ++ sysopen(T,"/tmp/expn$$", O_EXCL | O_CREAT) || die "open > /tmp/expn$$: $!\n"; + print T "set querytype=MX\n"; + print T "$server\n"; + close(T); diff --git a/am-utils.spec b/am-utils.spec index e8b11cd..ccbdbc8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 9%{?dist} +Release: 10%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -44,6 +44,8 @@ Patch2: am-utils-6.1.5-nfs-version.patch Patch3: am-utils-6.1.5-UTS_RELEASE.patch # Build system bugfixes Patch4: am-utils-6.1.5-buildsys.patch +# 435420 - CVE-2008-1078 am-utils: insecure usage of temporary files +Patch5: am-utils-6.1.5-expn-temp.patch # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -66,7 +68,8 @@ mounting and unmounting filesystems. %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 -b .kzak +%patch4 -p1 +%patch5 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -171,6 +174,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu May 29 2008 Karel Zak 5:6.1.5-10 +- fix #435420 - CVE-2008-1078 am-utils: insecure usage of temporary files + * Tue May 20 2008 Karel Zak 5:6.1.5-9 - spec file cleanup according to rpmlint - fix autotools stuff From 10e46e39b0d3a4eb75ac634203811017470e5755 Mon Sep 17 00:00:00 2001 From: kzak Date: Thu, 29 May 2008 12:08:33 +0000 Subject: [PATCH 049/157] add LSB header --- am-utils.init | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/am-utils.init b/am-utils.init index f508817..9464622 100755 --- a/am-utils.init +++ b/am-utils.init @@ -7,7 +7,13 @@ # on demand. # processname: amd # config: /etc/amd.conf -# +### BEGIN INIT INFO +# Provides: amd +# Required-Start: $local_fs +# Required-Stop: $local_fs +# Short-Description: start and stop early amd +# Description: Start and stop amd automounter +### END INIT INFO # We require the /etc/amd.conf file, but supply it in the package, so it # should always be there. From df2f3d2836b8126d2d1da38a58a13aaac53c7569 Mon Sep 17 00:00:00 2001 From: kzak Date: Thu, 29 May 2008 12:11:36 +0000 Subject: [PATCH 050/157] - review & cleanup init script --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index ccbdbc8..3d86f37 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 10%{?dist} +Release: 11%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -174,6 +174,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu May 29 2008 Karel Zak 5:6.1.5-11 +- review & cleanup init script + * Thu May 29 2008 Karel Zak 5:6.1.5-10 - fix #435420 - CVE-2008-1078 am-utils: insecure usage of temporary files From 73d5ff01c7dd64650b9b6bfd064c1f3de95aa31b Mon Sep 17 00:00:00 2001 From: kzak Date: Tue, 2 Dec 2008 13:08:47 +0000 Subject: [PATCH 051/157] - fix #450754 - Amd does not work with 2.6.25 (thanks to Philippe Troin) --- am-utils-6.1.5-nolock-toplvl.patch | 29 +++++++++++++++++++++++++++++ am-utils.spec | 8 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.1.5-nolock-toplvl.patch diff --git a/am-utils-6.1.5-nolock-toplvl.patch b/am-utils-6.1.5-nolock-toplvl.patch new file mode 100644 index 0000000..704cade --- /dev/null +++ b/am-utils-6.1.5-nolock-toplvl.patch @@ -0,0 +1,29 @@ + +amd does not work with kernel 2.6.25 + +Just after start-up, one can find the following in /var/log/messages: + +Jun 10 11:36:28 tantale amd[18589]: '/net': mount: No locks available +Jun 10 11:36:29 tantale kernel: Invalid hostname "pid18588@tantale:/net" in NFS lock request + +For more details see: + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=479884 + +From: Philippe Troin +Addresses-Red-Hat-Bug: #450754 + +diff -up am-utils-6.1.5/amd/amfs_toplvl.c.kzak am-utils-6.1.5/amd/amfs_toplvl.c +--- am-utils-6.1.5/amd/amfs_toplvl.c.kzak 2008-12-02 13:45:08.000000000 +0100 ++++ am-utils-6.1.5/amd/amfs_toplvl.c 2008-12-02 13:37:21.000000000 +0100 +@@ -226,7 +226,10 @@ amfs_toplvl_mount(am_node *mp, mntfs *mf + MNTTAB_OPT_RETRANS, gopt.amfs_auto_retrans[AMU_TYPE_TOPLVL]); + xstrlcat(opts, toplvl_opts, sizeof(opts)); + } +- ++#ifdef MNTTAB_OPT_NOLOCK ++ xstrlcat(opts, ",", sizeof(opts)); ++ xstrlcat(opts, MNTTAB_OPT_NOLOCK, sizeof(opts)); ++#endif /* MNTTAB_OPT_NOLOCK */ + #ifdef MNTTAB_OPT_NOAC + if (gopt.auto_attrcache == 0) { + xstrlcat(opts, ",", sizeof(opts)); diff --git a/am-utils.spec b/am-utils.spec index 3d86f37..8d0c4f4 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 11%{?dist} +Release: 12%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -46,6 +46,8 @@ Patch3: am-utils-6.1.5-UTS_RELEASE.patch Patch4: am-utils-6.1.5-buildsys.patch # 435420 - CVE-2008-1078 am-utils: insecure usage of temporary files Patch5: am-utils-6.1.5-expn-temp.patch +# 450754 - Amd does not work with 2.6.25 +Patch6: am-utils-6.1.5-nolock-toplvl.patch # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -70,6 +72,7 @@ mounting and unmounting filesystems. %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -174,6 +177,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Dec 2 2008 Karel Zak 5:6.1.5-12 +- fix #450754 - Amd does not work with 2.6.25 (thanks to Philippe Troin) + * Thu May 29 2008 Karel Zak 5:6.1.5-11 - review & cleanup init script From 844cbaea17c0ae5226c39bd4802bb626bf8df572 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Tue, 24 Feb 2009 00:52:11 +0000 Subject: [PATCH 052/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 8d0c4f4..ad5c1f1 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 12%{?dist} +Release: 13%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -177,6 +177,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Feb 23 2009 Fedora Release Engineering - 5:6.1.5-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + * Tue Dec 2 2008 Karel Zak 5:6.1.5-12 - fix #450754 - Amd does not work with 2.6.25 (thanks to Philippe Troin) From 127417eb1494933a0df6b36fb5d1d94f51354582 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Fri, 24 Jul 2009 16:49:11 +0000 Subject: [PATCH 053/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index ad5c1f1..7c73b75 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 13%{?dist} +Release: 14%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -177,6 +177,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Jul 24 2009 Fedora Release Engineering - 5:6.1.5-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + * Mon Feb 23 2009 Fedora Release Engineering - 5:6.1.5-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild From 2d10e9c3e53dfd58b7621fa12bf9dd65f733d60a Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Wed, 25 Nov 2009 22:39:40 +0000 Subject: [PATCH 054/157] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b98ec28..c0e1fa6 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Makefile for source rpm: am-utils -# $Id: Makefile,v 1.1 2004/09/09 02:55:12 cvsdist Exp $ +# $Id: Makefile,v 1.2 2007/10/15 18:35:34 notting Exp $ NAME := am-utils SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From 197cf35ac2af6e0cee893ffeafe7beccd129f218 Mon Sep 17 00:00:00 2001 From: kzak Date: Wed, 24 Feb 2010 14:00:23 +0000 Subject: [PATCH 055/157] - fix #523221 - initscript collected problems LSB-compilant --- am-utils.init | 132 +++++++++++++++++++++++++++++++------------------- am-utils.spec | 5 +- 2 files changed, 86 insertions(+), 51 deletions(-) diff --git a/am-utils.init b/am-utils.init index 9464622..cde8a1f 100755 --- a/am-utils.init +++ b/am-utils.init @@ -18,84 +18,116 @@ # We require the /etc/amd.conf file, but supply it in the package, so it # should always be there. [ -f /etc/amd.conf ] || exit $? -[ -f /etc/sysconfig/amd ] || exit $? -# Source function library. +# source function library. . /etc/init.d/functions -# Recover AMDOPTS from /etc/sysconfig/amd. -if [ -f /etc/sysconfig/amd ] ; then - . /etc/sysconfig/amd -fi +[ -e /etc/sysconfig/amd ] && . /etc/sysconfig/amd -RETVAL=0 +DAEMON=amd prog=amd -amd=/usr/sbin/amd +exec=/usr/sbin/amd +config=/etc/amd.conf +optconfig=/etc/sysconfig/amd +lockfile=/var/lock/subsys/$DAEMON -start() { - echo -n $"Starting $prog: " - daemon $amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS - RETVAL=$? - echo - [ $RETVAL = 0 ] && touch /var/lock/subsys/amd - return $RETVAL +[ -e $optconfig ] && . $optconfig + +check() { + # Check that we're a privileged user + [ $(id -u) -eq 0 ] || exit 4 } -stop() { - echo -n $"Stopping $prog: " - killproc $amd -TERM - # this part is from wait4amd2die +start () { + check + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + [ -f $optconfig ] || exit 6 + echo -n $"Starting $prog: " + daemon $exec -F $config $AMDOPTS $OPTIONS $MOUNTPTS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop () { + check + echo -n $"Stopping $prog: " + killproc $exec delay=3 count=10 i=1 + retval=1 maxcount=`expr $count + 1` while [ $i != $maxcount ]; do # run amq /usr/sbin/amq > /dev/null 2>&1 - if [ $? != 0 ] - then + if [ $? != 0 ]; then # amq failed to run (because amd is dead) - rm -f /var/lock/subsys/amd /var/run/amd.pid - echo - return 0 + retval=0 + break fi sleep $delay i=`expr $i + 1` done - failure $"amd shutdown" - echo - echo "amd is still up" - return 1 + + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval } -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status $amd - RETVAL=$? - ;; - restart) + +restart() { stop start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + status $DAEMON +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +case "$1" in + start) + rh_status_q && exit 0 + $1 ;; - condrestart) - if [ -f /var/lock/subsys/amd ]; then - stop - start - fi + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 ;; reload) - action $"Reloading $prog:" killall -HUP $amd + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart ;; *) - echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" - exit 1 + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 esac +exit $? -exit $RETVAL diff --git a/am-utils.spec b/am-utils.spec index 7c73b75..5670f6b 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 14%{?dist} +Release: 15%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -177,6 +177,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Feb 24 2010 Karel Zak 5:6.1.5-15 +- fix #523221 - initscript collected problems LSB-compilant + * Fri Jul 24 2009 Fedora Release Engineering - 5:6.1.5-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild From ece19f8388566e3ee47dcb646328f332ddf8ecf0 Mon Sep 17 00:00:00 2001 From: kzak Date: Mon, 1 Mar 2010 12:30:02 +0000 Subject: [PATCH 056/157] - fix #566711 - am-utils: incorrect use of tcp_wrapper --- am-utils-6.1.5-libwarp.patch | 69 ++++++++++++++++++++++++++++++++++++ am-utils.spec | 8 ++++- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.1.5-libwarp.patch diff --git a/am-utils-6.1.5-libwarp.patch b/am-utils-6.1.5-libwarp.patch new file mode 100644 index 0000000..9d13d0f --- /dev/null +++ b/am-utils-6.1.5-libwarp.patch @@ -0,0 +1,69 @@ +diff -up am-utils-6.1.5/amd/amq_svc.c.kzak am-utils-6.1.5/amd/amq_svc.c +--- am-utils-6.1.5/amd/amq_svc.c.kzak 2006-01-02 19:40:31.000000000 +0100 ++++ am-utils-6.1.5/amd/amq_svc.c 2010-03-01 12:43:25.000000000 +0100 +@@ -65,47 +65,17 @@ int allow_severity=0, deny_severity=0; + * Returns: 1=allowed, 0=denied. + */ + static int +-amqsvc_is_client_allowed(const struct sockaddr_in *addr, char *remote) ++amqsvc_is_client_allowed(const struct sockaddr_in *addr) + { +- struct hostent *h; +- char *name = NULL, **ad; +- int ret = 0; /* default is 0==denied */ +- +- /* Check IP address */ +- if (hosts_ctl(AMD_SERVICE_NAME, "", remote, "")) { +- ret = 1; +- goto out; +- } +- /* Get address */ +- if (!(h = gethostbyaddr((const char *)&(addr->sin_addr), +- sizeof(addr->sin_addr), +- AF_INET))) +- goto out; +- if (!(name = strdup(h->h_name))) +- goto out; +- /* Paranoia check */ +- if (!(h = gethostbyname(name))) +- goto out; +- for (ad = h->h_addr_list; *ad; ad++) +- if (!memcmp(*ad, &(addr->sin_addr), h->h_length)) +- break; +- if (!*ad) +- goto out; +- if (hosts_ctl(AMD_SERVICE_NAME, "", h->h_name, "")) { +- return 1; +- goto out; +- } +- /* Check aliases */ +- for (ad = h->h_aliases; *ad; ad++) +- if (hosts_ctl(AMD_SERVICE_NAME, "", *ad, "")) { +- return 1; +- goto out; +- } ++ struct request_info req; ++ ++ request_init(&req, RQ_DAEMON, AMD_SERVICE_NAME, RQ_CLIENT_SIN, addr, 0); ++ sock_methods(&req); ++ ++ if (hosts_access(&req)) ++ return 1; + +- out: +- if (name) +- XFREE(name); +- return ret; ++ return 0; + } + #endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ + +@@ -127,7 +97,7 @@ amq_program_1(struct svc_req *rqstp, SVC + struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt); + char *remote_hostname = inet_ntoa(remote_addr->sin_addr); + +- if (!amqsvc_is_client_allowed(remote_addr, remote_hostname)) { ++ if (!amqsvc_is_client_allowed(remote_addr)) { + plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); + svcerr_auth(transp, AUTH_FAILED); + return; diff --git a/am-utils.spec b/am-utils.spec index 5670f6b..92deca8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 15%{?dist} +Release: 16%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -48,6 +48,8 @@ Patch4: am-utils-6.1.5-buildsys.patch Patch5: am-utils-6.1.5-expn-temp.patch # 450754 - Amd does not work with 2.6.25 Patch6: am-utils-6.1.5-nolock-toplvl.patch +# 566711 - am-utils: incorrect use of tcp_wrapper +Patch7: am-utils-6.1.5-libwarp.patch # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -73,6 +75,7 @@ mounting and unmounting filesystems. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -177,6 +180,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Mar 1 2010 Karel Zak 5:6.1.5-16 +- fix #566711 - am-utils: incorrect use of tcp_wrapper + * Wed Feb 24 2010 Karel Zak 5:6.1.5-15 - fix #523221 - initscript collected problems LSB-compilant From f274a90c07ed8be6560c7534943270c3b0093bda Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 28 Jul 2010 09:47:10 +0000 Subject: [PATCH 057/157] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- 2 files changed, 21 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index c0e1fa6..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: am-utils -# $Id: Makefile,v 1.2 2007/10/15 18:35:34 notting Exp $ -NAME := am-utils -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attempt a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) From 4b3ba9d6a522c7fbf25e8434e8764459992a12a3 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 6 Oct 2010 11:31:09 +0200 Subject: [PATCH 058/157] 5:6.1.5-17: fix NFS lock problem (602938, 640383) Signed-off-by: Karel Zak --- .gitignore | 3 ++ am-utils-6.1.5-nolock-toplvl.patch | 49 +++++++++++++++++++++++++----- am-utils.spec | 8 ++++- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 417fec6..278b5d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ am-utils-6.1.5.tar.gz +*~ +*.log +*.rpm diff --git a/am-utils-6.1.5-nolock-toplvl.patch b/am-utils-6.1.5-nolock-toplvl.patch index 704cade..1606efd 100644 --- a/am-utils-6.1.5-nolock-toplvl.patch +++ b/am-utils-6.1.5-nolock-toplvl.patch @@ -6,15 +6,20 @@ Just after start-up, one can find the following in /var/log/messages: Jun 10 11:36:28 tantale amd[18589]: '/net': mount: No locks available Jun 10 11:36:29 tantale kernel: Invalid hostname "pid18588@tantale:/net" in NFS lock request -For more details see: - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=479884 - From: Philippe Troin -Addresses-Red-Hat-Bug: #450754 +Addresses: https://bugzilla.am-utils.org/show_bug.cgi?id=612 +Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=450754 +Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=640383 +Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=602938 -diff -up am-utils-6.1.5/amd/amfs_toplvl.c.kzak am-utils-6.1.5/amd/amfs_toplvl.c ---- am-utils-6.1.5/amd/amfs_toplvl.c.kzak 2008-12-02 13:45:08.000000000 +0100 -+++ am-utils-6.1.5/amd/amfs_toplvl.c 2008-12-02 13:37:21.000000000 +0100 +--- + amd/amfs_toplvl.c | 5 ++++- + amd/autil.c | 8 ++++++-- + configure.in | 3 +++ + 3 files changed, 13 insertions(+), 3 deletions(-) + +--- am-utils-6.1.5.orig/amd/amfs_toplvl.c ++++ am-utils-6.1.5/amd/amfs_toplvl.c @@ -226,7 +226,10 @@ amfs_toplvl_mount(am_node *mp, mntfs *mf MNTTAB_OPT_RETRANS, gopt.amfs_auto_retrans[AMU_TYPE_TOPLVL]); xstrlcat(opts, toplvl_opts, sizeof(opts)); @@ -27,3 +32,33 @@ diff -up am-utils-6.1.5/amd/amfs_toplvl.c.kzak am-utils-6.1.5/amd/amfs_toplvl.c #ifdef MNTTAB_OPT_NOAC if (gopt.auto_attrcache == 0) { xstrlcat(opts, ",", sizeof(opts)); +--- am-utils-6.1.5.orig/amd/autil.c ++++ am-utils-6.1.5/amd/autil.c +@@ -491,9 +491,13 @@ amfs_mount(am_node *mp, mntfs *mf, char + + /* + * Make a ``hostname'' string for the kernel ++ * ++ * Linux kernel since v2.6.19-rc1 (commit 8dead0dbd478f35fd943f3719591e5af1ac0950d) ++ * does not accept '/' in hostname in NFS lock requests. ++ * -- kzak@redhat.com, 06-Oct-2010 + */ +- xsnprintf(fs_hostname, sizeof(fs_hostname), "pid%ld@%s:%s", +- get_server_pid(), am_get_hostname(), dir); ++ xsnprintf(fs_hostname, sizeof(fs_hostname), "%s", am_get_hostname()); ++ + /* + * Most kernels have a name length restriction (64 bytes)... + */ +--- am-utils-6.1.5.orig/configure.in ++++ am-utils-6.1.5/configure.in +@@ -621,6 +621,9 @@ AC_CHECK_HEADERS([ \ + # ifndef __KERNEL__ + # define __KERNEL__ + # endif /* __KERNEL__ */ ++#ifdef HAVE_SYS_SOCKET_H ++# include ++#endif /* HAVE_SYS_SOCKET_H */ + #ifdef HAVE_LINUX_SOCKET_H + # include + #endif /* HAVE_LINUX_SOCKET_H */ diff --git a/am-utils.spec b/am-utils.spec index 92deca8..bf3c533 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 16%{?dist} +Release: 17%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -47,6 +47,8 @@ Patch4: am-utils-6.1.5-buildsys.patch # 435420 - CVE-2008-1078 am-utils: insecure usage of temporary files Patch5: am-utils-6.1.5-expn-temp.patch # 450754 - Amd does not work with 2.6.25 +# 602938 - am-utils fails on f13 with amfs_toplvl_mount +# 640383 - am-utils doesn't work in Fedora 13 Patch6: am-utils-6.1.5-nolock-toplvl.patch # 566711 - am-utils: incorrect use of tcp_wrapper Patch7: am-utils-6.1.5-libwarp.patch @@ -180,6 +182,10 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Oct 6 2010 Karel Zak 5:6.1.5-17 +- fix #602938 - am-utils fails on f13 with amfs_toplvl_mount +- fix #640383 - am-utils doesn't work in Fedora 13 + * Mon Mar 1 2010 Karel Zak 5:6.1.5-16 - fix #566711 - am-utils: incorrect use of tcp_wrapper From e510face9f6436c2faf2c1ab2b66086c873f0889 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Mon, 7 Feb 2011 19:02:47 -0600 Subject: [PATCH 059/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index bf3c533..948ed1f 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 17%{?dist} +Release: 18%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -182,6 +182,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Feb 07 2011 Fedora Release Engineering - 5:6.1.5-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + * Wed Oct 6 2010 Karel Zak 5:6.1.5-17 - fix #602938 - am-utils fails on f13 with amfs_toplvl_mount - fix #640383 - am-utils doesn't work in Fedora 13 From 4e1a5b87de3a372db36b08de0b4c933e853948bb Mon Sep 17 00:00:00 2001 From: "Tom \"spot\" Callaway" Date: Thu, 8 Sep 2011 13:49:27 -0400 Subject: [PATCH 060/157] convert to systemd --- am-utils.spec | 41 ++++++++++++++++++++++------------------- amd.service | 10 ++++++++++ 2 files changed, 32 insertions(+), 19 deletions(-) create mode 100644 amd.service diff --git a/am-utils.spec b/am-utils.spec index 948ed1f..c8b5dfe 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,20 +1,18 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 18%{?dist} +Release: 19%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons URL: http://am-utils.org Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{version}.tar.gz -Source1: am-utils.init +Source1: amd.service Source2: am-utils.conf Source3: am-utils.sysconf Source4: am-utils.net.map -Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - BuildRequires: gdbm-devel BuildRequires: hesiod-devel BuildRequires: openldap-devel @@ -24,6 +22,7 @@ BuildRequires: libtool BuildRequires: bison BuildRequires: flex BuildRequires: tcp_wrappers-devel +BuildRequires: systemd-units Requires: portmap Requires: grep @@ -32,9 +31,8 @@ Requires: findutils Requires(pre): /bin/grep Requires(post): /sbin/install-info -Requires(post): /sbin/chkconfig +Requires(post): systemd-sysv Requires(preun): /sbin/install-info -Requires(preun): /sbin/chkconfig # 203193 - tmpfile usage Patch1: am-utils-6.1.5-rmtab-temp.patch @@ -96,12 +94,12 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool make %{?_smp_flags} %install -rm -rf ${RPM_BUILD_ROOT} %makeinstall -mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/{rc.d/init.d,sysconfig} +mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig +mkdir -p ${RPM_BUILD_ROOT}%{_unitdir} -install -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_sysconfdir}/rc.d/init.d/amd +install -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_unitdir}/ install -m 600 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig/amd install -m 640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.net @@ -144,7 +142,6 @@ fi %post /sbin/ldconfig -/sbin/chkconfig --add amd if [ -f %{_infodir}/am-utils.info.gz ]; then /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi @@ -154,18 +151,21 @@ if [ $1 -eq 0 ]; then if [ -f %{_infodir}/am-utils.info.gz ]; then /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi - /sbin/service amd stop >/dev/null 2>&1 - /sbin/chkconfig --del amd fi -%postun -if [ $1 -ge 1 ]; then - /sbin/service amd condrestart >/dev/null 2>&1 -fi -/sbin/ldconfig +%postun -p /sbin/ldconfig + +%triggerun -- am-utils < 6.1.5-19 +# Save the current service runlevel info +# User must manually run systemd-sysv-convert --apply amd +# to migrate them to systemd targets +/usr/bin/systemd-sysv-convert --save amd >/dev/null 2>&1 ||: + +# Run these because the SysV package being removed won't do them +/sbin/chkconfig --del amd >/dev/null 2>&1 || : +/bin/systemctl try-restart amd.service >/dev/null 2>&1 || : %files -%defattr(-,root,root) %doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample %dir /.automount %{_bindir}/expn @@ -177,11 +177,14 @@ fi %config(noreplace) %{_sysconfdir}/amd.net %config(noreplace) %{_sysconfdir}/amd.conf %config(noreplace) %{_sysconfdir}/sysconfig/amd -%{_sysconfdir}/rc.d/init.d/amd +%{_unitdir}/amd.service %{_infodir}/*info*.gz %{_libdir}/libamu.so* %changelog +* Thu Sep 08 2011 Tom Callaway - 5:6.1.5-19 +- convert from sysvinit to systemd + * Mon Feb 07 2011 Fedora Release Engineering - 5:6.1.5-18 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/amd.service b/amd.service new file mode 100644 index 0000000..ea969c9 --- /dev/null +++ b/amd.service @@ -0,0 +1,10 @@ +[Unit] +Description=automount daemon that mounts devices and NFS hosts on demand +After=syslog.target network.target + +[Service] +EnvironmentFile=-/etc/sysconfig/amd +ExecStart=/usr/sbin/amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS + +[Install] +WantedBy=multi-user.target From 07bbe62dbcf1ef219c79deb730d0635fdab722ca Mon Sep 17 00:00:00 2001 From: "Tom \"spot\" Callaway" Date: Fri, 9 Sep 2011 12:02:01 -0400 Subject: [PATCH 061/157] add missing scriptlets --- am-utils.spec | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index c8b5dfe..e30681d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 19%{?dist} +Release: 20%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -29,10 +29,13 @@ Requires: grep Requires: gawk Requires: findutils -Requires(pre): /bin/grep -Requires(post): /sbin/install-info -Requires(post): systemd-sysv -Requires(preun): /sbin/install-info +Requires(pre): /bin/grep +Requires(post): /sbin/install-info +Requires(post): systemd-sysv +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +Requires(preun): /sbin/install-info # 203193 - tmpfile usage Patch1: am-utils-6.1.5-rmtab-temp.patch @@ -123,9 +126,6 @@ for I in %{_libdir}/libamu.a \ rm -f $RPM_BUILD_ROOT$I done -%clean -rm -rf ${RPM_BUILD_ROOT} - %define __find_requires %{_builddir}/%{name}-%{version}/find-requires %pre @@ -142,18 +142,31 @@ fi %post /sbin/ldconfig +if [ $1 -eq 1 ] ; then + # Initial installation + /bin/systemctl daemon-reload >/dev/null 2>&1 || : +fi if [ -f %{_infodir}/am-utils.info.gz ]; then /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi %preun if [ $1 -eq 0 ]; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable amd.service > /dev/null 2>&1 || : + /bin/systemctl stop amd.service > /dev/null 2>&1 || : if [ -f %{_infodir}/am-utils.info.gz ]; then /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi fi -%postun -p /sbin/ldconfig +%postun +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +if [ $1 -ge 1 ] ; then + # Package upgrade, not uninstall + /bin/systemctl try-restart amd.service >/dev/null 2>&1 || : +fi +/sbin/ldconfig %triggerun -- am-utils < 6.1.5-19 # Save the current service runlevel info @@ -182,6 +195,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Sep 09 2011 Tom Callaway - 5:6.1.5-20 +- add missing systemd scriptlets + * Thu Sep 08 2011 Tom Callaway - 5:6.1.5-19 - convert from sysvinit to systemd From 3c64e7fa48b64a786e76194ca12e92876e46ac46 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Thu, 12 Jan 2012 15:12:56 -0600 Subject: [PATCH 062/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index e30681d..3621372 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 20%{?dist} +Release: 21%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -195,6 +195,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Jan 12 2012 Fedora Release Engineering - 5:6.1.5-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Fri Sep 09 2011 Tom Callaway - 5:6.1.5-20 - add missing systemd scriptlets From 57c116ea0c1159316e06fce538c05cd7dedb14d8 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 24 Jan 2012 13:45:14 +0100 Subject: [PATCH 063/157] 5:6.1.5-22: fix #784235 Signed-off-by: Karel Zak --- am-utils.spec | 5 ++++- amd.service | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 3621372..e6ae1f0 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 21%{?dist} +Release: 22%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -195,6 +195,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Jan 24 2012 Karel Zak - 5:6.1.5-22 +- fix #784235 - amd immediately exits after starting with systemd + * Thu Jan 12 2012 Fedora Release Engineering - 5:6.1.5-21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild diff --git a/amd.service b/amd.service index ea969c9..b078c9e 100644 --- a/amd.service +++ b/amd.service @@ -4,6 +4,7 @@ After=syslog.target network.target [Service] EnvironmentFile=-/etc/sysconfig/amd +Type=forking ExecStart=/usr/sbin/amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS [Install] From f0135cde2832e8819d594d9c14d223dbbe4b8e59 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Wed, 18 Jul 2012 10:55:01 -0500 Subject: [PATCH 064/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index e6ae1f0..4822e03 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 22%{?dist} +Release: 23%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -195,6 +195,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 18 2012 Fedora Release Engineering - 5:6.1.5-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Tue Jan 24 2012 Karel Zak - 5:6.1.5-22 - fix #784235 - amd immediately exits after starting with systemd From 7c310ec8194da4993ebd4a3581202afdb2687bab Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 12 Oct 2012 10:12:32 +0800 Subject: [PATCH 065/157] - scriptlets replaced with new systemd macros (#850023) --- am-utils.spec | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 4822e03..5d3d932 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 23%{?dist} +Release: 24%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -142,30 +142,25 @@ fi %post /sbin/ldconfig -if [ $1 -eq 1 ] ; then - # Initial installation - /bin/systemctl daemon-reload >/dev/null 2>&1 || : -fi +%systemd_post amd.service + if [ -f %{_infodir}/am-utils.info.gz ]; then /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi %preun +%systemd_preun amd.service + if [ $1 -eq 0 ]; then # Package removal, not upgrade - /bin/systemctl --no-reload disable amd.service > /dev/null 2>&1 || : - /bin/systemctl stop amd.service > /dev/null 2>&1 || : if [ -f %{_infodir}/am-utils.info.gz ]; then /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : fi fi %postun -/bin/systemctl daemon-reload >/dev/null 2>&1 || : -if [ $1 -ge 1 ] ; then - # Package upgrade, not uninstall - /bin/systemctl try-restart amd.service >/dev/null 2>&1 || : -fi +%systemd_postun_with_restart amd.service + /sbin/ldconfig %triggerun -- am-utils < 6.1.5-19 @@ -195,6 +190,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Aug 22 2012 Václav Pavlín - 5:6.1.5-24 +- Scriptlets replaced with new systemd macros (#850023) + * Wed Jul 18 2012 Fedora Release Engineering - 5:6.1.5-23 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild From 934585dc5a602ae5168dfc40dc531a8ffd575572 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Wed, 13 Feb 2013 10:30:03 -0600 Subject: [PATCH 066/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 5d3d932..c03faed 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 24%{?dist} +Release: 25%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -190,6 +190,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Feb 13 2013 Fedora Release Engineering - 5:6.1.5-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + * Wed Aug 22 2012 Václav Pavlín - 5:6.1.5-24 - Scriptlets replaced with new systemd macros (#850023) From 776204c3631fd1cfd1b2798b6fe61a17d1e2696d Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 18 Feb 2013 16:50:10 +0800 Subject: [PATCH 067/157] - add BuildRequires for texinfo. --- am-utils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index c03faed..2c84e56 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 25%{?dist} +Release: 26%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -23,6 +23,7 @@ BuildRequires: bison BuildRequires: flex BuildRequires: tcp_wrappers-devel BuildRequires: systemd-units +BuildRequires: texinfo Requires: portmap Requires: grep @@ -190,6 +191,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Feb 18 2013 Ian Kent - 5:6.1.5-25 +- add BuildRequires for texinfo. + * Wed Feb 13 2013 Fedora Release Engineering - 5:6.1.5-25 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild From beda81100b5d626b2785c21026b46ecf595927db Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 28 Apr 2013 11:36:49 +0800 Subject: [PATCH 068/157] - correct revision in changelog. --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 2c84e56..6073a99 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -191,7 +191,7 @@ fi %{_libdir}/libamu.so* %changelog -* Mon Feb 18 2013 Ian Kent - 5:6.1.5-25 +* Mon Feb 18 2013 Ian Kent - 5:6.1.5-26 - add BuildRequires for texinfo. * Wed Feb 13 2013 Fedora Release Engineering - 5:6.1.5-25 From 027f675657d7bb7ca32621167342d2b22a3bf846 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 28 Apr 2013 11:58:26 +0800 Subject: [PATCH 069/157] - bz955445 - am-utils package should be built with PIE flags --- am-utils.spec | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 6073a99..bcea327 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 26%{?dist} +Release: 27%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -54,6 +54,10 @@ Patch5: am-utils-6.1.5-expn-temp.patch Patch6: am-utils-6.1.5-nolock-toplvl.patch # 566711 - am-utils: incorrect use of tcp_wrapper Patch7: am-utils-6.1.5-libwarp.patch +# 955445 - am-utils package should be built with PIE flags +Patch8: am-utils-6.1.5-use-_hardened_build-flag.patch + +%global _hardened_build 1 # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -80,6 +84,7 @@ mounting and unmounting filesystems. %patch5 -p1 %patch6 -p1 %patch7 -p1 +#%patch8 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -89,7 +94,7 @@ chmod +x find-requires ./bootstrap %configure \ --enable-shared \ - --enable-am-cflags="${RPM_OPT_FLAGS} -DHAVE_LINUX_NFS_MOUNT_H" \ + --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ --enable-libs="-lnsl -lresolv" sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool @@ -191,6 +196,10 @@ fi %{_libdir}/libamu.so* %changelog +* Sun Apr 18 2013 Ian Kent - 5:6.1.5-27 +- bz955445 - am-utils package should be built with PIE flags + - use _hardened_build flag. + * Mon Feb 18 2013 Ian Kent - 5:6.1.5-26 - add BuildRequires for texinfo. From fd43dc72aaf59cfd6c22eba65ef36312de54059a Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 28 Apr 2013 12:06:57 +0800 Subject: [PATCH 070/157] - actually add the required patch for previous commit. --- am-utils-6.1.5-use-_hardened_build-flag.patch | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 am-utils-6.1.5-use-_hardened_build-flag.patch diff --git a/am-utils-6.1.5-use-_hardened_build-flag.patch b/am-utils-6.1.5-use-_hardened_build-flag.patch new file mode 100644 index 0000000..668de88 --- /dev/null +++ b/am-utils-6.1.5-use-_hardened_build-flag.patch @@ -0,0 +1,103 @@ +diff -up am-utils-6.1.5/amd/Makefile.am.orig am-utils-6.1.5/amd/Makefile.am +--- am-utils-6.1.5/amd/Makefile.am.orig 2013-04-28 11:00:46.447657616 +0800 ++++ am-utils-6.1.5/amd/Makefile.am 2013-04-28 11:01:13.435635544 +0800 +@@ -112,7 +112,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + AM_YFLAGS = -d + + # dependencies +diff -up am-utils-6.1.5/amq/Makefile.am.orig am-utils-6.1.5/amq/Makefile.am +--- am-utils-6.1.5/amq/Makefile.am.orig 2013-04-28 11:10:03.235036740 +0800 ++++ am-utils-6.1.5/amq/Makefile.am 2013-04-28 11:10:15.271022717 +0800 +@@ -22,7 +22,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + + # additional files to distribute and clean + EXTRA_DIST = $(man_MANS) +diff -up am-utils-6.1.5/fixmount/Makefile.am.orig am-utils-6.1.5/fixmount/Makefile.am +--- am-utils-6.1.5/fixmount/Makefile.am.orig 2013-04-28 11:10:31.786003486 +0800 ++++ am-utils-6.1.5/fixmount/Makefile.am 2013-04-28 11:10:43.373990002 +0800 +@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + + # additional files to distribute and clean + EXTRA_DIST = $(man_MANS) +diff -up am-utils-6.1.5/fsinfo/Makefile.am.orig am-utils-6.1.5/fsinfo/Makefile.am +--- am-utils-6.1.5/fsinfo/Makefile.am.orig 2013-04-28 11:10:58.384972545 +0800 ++++ am-utils-6.1.5/fsinfo/Makefile.am 2013-04-28 11:11:11.180957646 +0800 +@@ -43,7 +43,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + AM_YFLAGS = -d + + # dependencies +diff -up am-utils-6.1.5/hlfsd/Makefile.am.orig am-utils-6.1.5/hlfsd/Makefile.am +--- am-utils-6.1.5/hlfsd/Makefile.am.orig 2013-04-28 11:12:47.916845475 +0800 ++++ am-utils-6.1.5/hlfsd/Makefile.am 2013-04-28 11:13:12.632816898 +0800 +@@ -24,7 +24,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + + # additional files to distribute and clean + EXTRA_DIST = $(man_MANS) +diff -up am-utils-6.1.5/libamu/Makefile.am.orig am-utils-6.1.5/libamu/Makefile.am +--- am-utils-6.1.5/libamu/Makefile.am.orig 2013-04-28 10:47:29.683225080 +0800 ++++ am-utils-6.1.5/libamu/Makefile.am 2013-04-28 11:00:21.405678035 +0800 +@@ -69,13 +69,13 @@ libamu_la_DEPENDENCIES = @AMU_LIB_OBJS@ + + + # LDFLAGS should include standard ones plus LIBTOOL ones +-AM_LDFLAGS = @LDFLAGS@ @LIBTOOL_LDFLAGS@ ++AM_LDFLAGS = @LIBTOOL_LDFLAGS@ + + INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + + # dependencies + $(libamu_la_OBJECTS) $(libamu_la_LIBADD): \ +diff -up am-utils-6.1.5/mk-amd-map/Makefile.am.orig am-utils-6.1.5/mk-amd-map/Makefile.am +--- am-utils-6.1.5/mk-amd-map/Makefile.am.orig 2013-04-28 11:13:28.858798119 +0800 ++++ am-utils-6.1.5/mk-amd-map/Makefile.am 2013-04-28 11:13:41.095783984 +0800 +@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + + # additional files to distribute and clean + EXTRA_DIST = $(man_MANS) +diff -up am-utils-6.1.5/wire-test/Makefile.am.orig am-utils-6.1.5/wire-test/Makefile.am +--- am-utils-6.1.5/wire-test/Makefile.am.orig 2013-04-28 11:14:00.265761847 +0800 ++++ am-utils-6.1.5/wire-test/Makefile.am 2013-04-28 11:14:53.069700943 +0800 +@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include + + # allow users to add their own flags via "configure --enable-am-flags=ARG" + AMU_CFLAGS = @AMU_CFLAGS@ +-AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) ++AM_CFLAGS = $(AMU_CFLAGS) + + # additional files to distribute and clean + EXTRA_DIST = $(man_MANS) From 0023255ddcf446a2ee4277268f7c5cc1c4969b9f Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 28 Apr 2013 12:20:32 +0800 Subject: [PATCH 071/157] - oh .. and actually apply the patch, DOH! --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index bcea327..d6faa38 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -84,7 +84,7 @@ mounting and unmounting filesystems. %patch5 -p1 %patch6 -p1 %patch7 -p1 -#%patch8 -p1 +%patch8 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires From 1a83a2146cb04aed9c04f2c13adec763a4c81c17 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 28 Apr 2013 12:47:14 +0800 Subject: [PATCH 072/157] - correct changelog date. --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index d6faa38..2e00fcb 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -196,7 +196,7 @@ fi %{_libdir}/libamu.so* %changelog -* Sun Apr 18 2013 Ian Kent - 5:6.1.5-27 +* Sun Apr 28 2013 Ian Kent - 5:6.1.5-27 - bz955445 - am-utils package should be built with PIE flags - use _hardened_build flag. From 6690a9809f02530407f6af287e0c5c55acfb6d02 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 28 Apr 2013 13:02:21 +0800 Subject: [PATCH 073/157] - texinfo documentation build fixes. --- ...ils-6.1.5-texinfo-documentation-build-fixes.patch | 12 ++++++++++++ am-utils.spec | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.1.5-texinfo-documentation-build-fixes.patch diff --git a/am-utils-6.1.5-texinfo-documentation-build-fixes.patch b/am-utils-6.1.5-texinfo-documentation-build-fixes.patch new file mode 100644 index 0000000..7305c7d --- /dev/null +++ b/am-utils-6.1.5-texinfo-documentation-build-fixes.patch @@ -0,0 +1,12 @@ +diff -up am-utils-6.1.5/doc/am-utils.texi.orig am-utils-6.1.5/doc/am-utils.texi +--- am-utils-6.1.5/doc/am-utils.texi.orig 2013-04-28 12:55:39.035902316 +0800 ++++ am-utils-6.1.5/doc/am-utils.texi 2013-04-28 12:57:13.865766455 +0800 +@@ -67,7 +67,7 @@ Copyright @copyright{} 1989 Jan-Simon Pe + Copyright @copyright{} 1989 Imperial College of Science, Technology & Medicine + @* + Copyright @copyright{} 1989 The Regents of the University of California. +-@sp ++@sp 1 + All Rights Reserved. + @vskip 1ex + Permission to copy this document, or any portion of it, as diff --git a/am-utils.spec b/am-utils.spec index 2e00fcb..d092365 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 27%{?dist} +Release: 28%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -56,6 +56,8 @@ Patch6: am-utils-6.1.5-nolock-toplvl.patch Patch7: am-utils-6.1.5-libwarp.patch # 955445 - am-utils package should be built with PIE flags Patch8: am-utils-6.1.5-use-_hardened_build-flag.patch +# Fix documentation build fails. +Patch9: am-utils-6.1.5-texinfo-documentation-build-fixes.patch %global _hardened_build 1 @@ -85,6 +87,7 @@ mounting and unmounting filesystems. %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -196,6 +199,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sun Apr 28 2013 Ian Kent - 5:6.1.5-28 +- texinfo documentation build fixes. + * Sun Apr 28 2013 Ian Kent - 5:6.1.5-27 - bz955445 - am-utils package should be built with PIE flags - use _hardened_build flag. From 47dd6a17a1eadc223c9aee07b0469e59b3ec351d Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 2 Aug 2013 19:41:11 -0500 Subject: [PATCH 074/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index d092365..05659a4 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 28%{?dist} +Release: 29%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -199,6 +199,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sat Aug 03 2013 Fedora Release Engineering - 5:6.1.5-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + * Sun Apr 28 2013 Ian Kent - 5:6.1.5-28 - texinfo documentation build fixes. From 74b172da4458db11c2c7f1f0b68558d0de2a38ac Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Thu, 20 Mar 2014 15:19:26 +0800 Subject: [PATCH 075/157] - make am-utils work with autofs (since NFSv2 client is disabled) and add misc bug fixes (bz1074376). --- ...s-6.1.5-check-fh-on-umount-succeeded.patch | 24 +++ ...-6.1.5-dont-background-autofs-umount.patch | 35 ++++ ....1.5-fix-autofs-proto-version-define.patch | 28 ++++ ...OENT-umount-return-for-autofs-mounts.patch | 33 ++++ ...fb4-fix-handle-failed-umount-on-exit.patch | 13 ++ ....9b652fb4-linux-umount-wait-on-ebusy.patch | 50 ++++++ ....git.e03592f0-fix-debug-log-deadlock.patch | 82 ++++++++++ ...e03592f0-fix-get_nfs_version-message.patch | 22 +++ ...-in-the-proper-order-when-going-down.patch | 152 ++++++++++++++++++ am-utils.spec | 34 +++- 10 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.1.5-check-fh-on-umount-succeeded.patch create mode 100644 am-utils-6.1.5-dont-background-autofs-umount.patch create mode 100644 am-utils-6.1.5-fix-autofs-proto-version-define.patch create mode 100644 am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch create mode 100644 am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch create mode 100644 am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch create mode 100644 am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch create mode 100644 am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch create mode 100644 am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch diff --git a/am-utils-6.1.5-check-fh-on-umount-succeeded.patch b/am-utils-6.1.5-check-fh-on-umount-succeeded.patch new file mode 100644 index 0000000..5325438 --- /dev/null +++ b/am-utils-6.1.5-check-fh-on-umount-succeeded.patch @@ -0,0 +1,24 @@ + + +From: Ian Kent + + +--- + conf/autofs/autofs_linux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c +index 5e6a171..fd5dbc6 100644 +--- a/conf/autofs/autofs_linux.c ++++ b/conf/autofs/autofs_linux.c +@@ -753,6 +753,10 @@ autofs_umount_succeeded(am_node *mp) + autofs_fh_t *fh = mp->am_parent->am_autofs_fh; + struct autofs_pending_umount **pp, *p; + ++ /* Already gone? */ ++ if (fh == NULL) ++ return 0; ++ + pp = &fh->pending_umounts; + while (*pp && !STREQ((*pp)->name, mp->am_name)) + pp = &(*pp)->next; diff --git a/am-utils-6.1.5-dont-background-autofs-umount.patch b/am-utils-6.1.5-dont-background-autofs-umount.patch new file mode 100644 index 0000000..7f8cde7 --- /dev/null +++ b/am-utils-6.1.5-dont-background-autofs-umount.patch @@ -0,0 +1,35 @@ +am-utils-6.1.5 - dont background autofs umount + +From: Ian Kent + +When using an autofs multi-level mount map amd can fail to umount +NFS leaf mounts causing shutdown to fail. It also can cause amd to +SEGV because, even though umounts fail, the autofs mount control +structure is freed and a later umount attempt doesn't check if this +struct is valid before using it. + +The cause of the umount failure appears to be the background umount +of NFS mounts at the leaf of the tree not finishing before the autofs +file system mounts above are attempted. + +It isn't worth adding a patch to check if the autofs mount control +structure is valid because if it isn't, in this case, amd doesn't +crash but still becomes unresponsive. +--- + amd/map.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/amd/map.c b/amd/map.c +index 2fad4b7..8e86b39 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -946,7 +946,8 @@ unmount_mp(am_node *mp) + #endif /* HAVE_FS_AUTOFS */ + + if ((mf->mf_fsflags & FS_UBACKGROUND) && +- (mf->mf_flags & MFF_MOUNTED)) { ++ (mf->mf_flags & MFF_MOUNTED) && ++ !(mf->mf_flags & MFF_ON_AUTOFS)) { + dlog("Trying unmount in background"); + run_task(unmount_node, (opaque_t) mp, + free_map_if_success, (opaque_t) mp); diff --git a/am-utils-6.1.5-fix-autofs-proto-version-define.patch b/am-utils-6.1.5-fix-autofs-proto-version-define.patch new file mode 100644 index 0000000..8b04bcc --- /dev/null +++ b/am-utils-6.1.5-fix-autofs-proto-version-define.patch @@ -0,0 +1,28 @@ +am-utils-6.1.5 - fix autofs proto version define + +From: Ian Kent + +I don't think am-utils works with autofs protocol version 5. +--- + + conf/autofs/autofs_linux.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + + +diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c +index f56befa..eeb211f 100644 +--- a/conf/autofs/autofs_linux.c ++++ b/conf/autofs/autofs_linux.c +@@ -59,8 +59,11 @@ + */ + + #define AUTOFS_MIN_VERSION 3 ++#if AUTOFS_MAX_PROTO_VERSION >= 5 ++#define AUTOFS_MAX_VERSION 4 ++#else + #define AUTOFS_MAX_VERSION AUTOFS_MAX_PROTO_VERSION +- ++#endif + + /* + * STRUCTURES: diff --git a/am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch b/am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch new file mode 100644 index 0000000..5785898 --- /dev/null +++ b/am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch @@ -0,0 +1,33 @@ +am-utils-6.1.5 - handle ENOENT umount return for autofs mounts + +From: Ian Kent + +An ENOENT return from umount(2) means the kernel path walk couldn't +resolve the path of the mount to a dentry. In that case there can't +be an autofs waitq entry waiting for notification, since there's no +dentry, so don't even try to notify the kernel. +--- + amd/map.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/amd/map.c b/amd/map.c +index 8e86b39..e6d14b8 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -873,10 +873,12 @@ free_map_if_success(int rc, int term, opaque_t arg) + else + plog(XLOG_ERROR, "%s: unmount: %s", mp->am_path, strerror(rc)); + #ifdef HAVE_FS_AUTOFS +- if (mf->mf_flags & MFF_IS_AUTOFS) +- autofs_get_mp(mp); +- if (mp->am_flags & AMF_AUTOFS) +- autofs_umount_failed(mp); ++ if (rc != ENOENT) { ++ if (mf->mf_flags & MFF_IS_AUTOFS) ++ autofs_get_mp(mp); ++ if (mp->am_flags & AMF_AUTOFS) ++ autofs_umount_failed(mp); ++ } + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else { diff --git a/am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch b/am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch new file mode 100644 index 0000000..7ece413 --- /dev/null +++ b/am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch @@ -0,0 +1,13 @@ +diff -up am-utils-6.1.5/amd/map.c.orig am-utils-6.1.5/amd/map.c +--- am-utils-6.1.5/amd/map.c.orig 2014-03-19 19:45:45.000000000 +0800 ++++ am-utils-6.1.5/amd/map.c 2014-03-19 19:47:42.741848068 +0800 +@@ -748,7 +748,8 @@ umount_exported(void) + } else { + am_unmounted(mp); + } +- exported_ap[i] = NULL; ++ if (!(mf->mf_flags && (MFF_UNMOUNTING|MFF_MOUNTED))) ++ exported_ap[i] = NULL; + } else { + /* + * Any other node gets forcibly timed out. diff --git a/am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch b/am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch new file mode 100644 index 0000000..3896c68 --- /dev/null +++ b/am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch @@ -0,0 +1,50 @@ +am-utils-6.2-0.git.9b652fb4 - linux umount wait on ebusy + +From: Ian Kent + +For some reason, when umounting autofs mounts after closing the ioctl +file handle, the kernel can return EBUSY for some small amount of time. + +This can cause umounts to incorrectly fail when in fact they should +succeed. + +Retrying for about a second and a half seems to work quite well. +--- + conf/umount/umount_linux.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/conf/umount/umount_linux.c b/conf/umount/umount_linux.c +index 782c2cd..81b0527 100644 +--- a/conf/umount/umount_linux.c ++++ b/conf/umount/umount_linux.c +@@ -63,6 +63,7 @@ umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags) + char loopstr[] = "loop="; + char *loopdev; + #endif /* HAVE_LOOP_DEVICE */ ++ unsigned int retries = 8; + + mp = mlist = read_mtab(mntdir, mnttabname); + +@@ -94,6 +95,7 @@ umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags) + unlock_mntlist(); + #endif /* MOUNT_TABLE_ON_FILE */ + ++again: + #if defined(HAVE_UMOUNT2) && defined(MNT2_GEN_OPT_DETACH) + /* + * If user asked to try forced unmounts, then do a quick check to see if +@@ -111,6 +113,14 @@ umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags) + } else + #endif /* defined(HAVE_UMOUNT2) && defined(MNT2_GEN_OPT_DETACH) */ + error = UNMOUNT_TRAP(mp_save->mnt); ++ ++ /* Linux kernel can be sluggish for some reason */ ++ if (error == EBUSY && retries--) { ++ struct timespec tm = {0, 200000000}; ++ nanosleep(&tm, NULL); ++ goto again; ++ } ++ + if (error < 0) { + plog(XLOG_WARNING, "unmount(%s) failed: %m", mp_save->mnt->mnt_dir); + switch ((error = errno)) { diff --git a/am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch b/am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch new file mode 100644 index 0000000..442442d --- /dev/null +++ b/am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch @@ -0,0 +1,82 @@ +am-utils-6.2-1.git.e03592f0 - fix debug log deadlock + +From: Ian Kent + +It's possible (and likely) a SIGCHLD signal can arrive while in syslog(2) +and also attempt log log a message leading to deadlock. +--- + libamu/xutil.c | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/libamu/xutil.c b/libamu/xutil.c +index b3e3a0f..0d9d2ec 100644 +--- a/libamu/xutil.c ++++ b/libamu/xutil.c +@@ -420,14 +420,33 @@ debug_option(char *opt) + void + dplog(const char *fmt, ...) + { ++#ifdef HAVE_SIGACTION ++ sigset_t old, chld; ++#else /* not HAVE_SIGACTION */ ++ int mask; ++#endif /* not HAVE_SIGACTION */ + va_list ap; + ++#ifdef HAVE_SIGACTION ++ sigemptyset(&chld); ++ sigaddset(&chld, SIGCHLD); ++#else /* not HAVE_SIGACTION */ ++ mask = sigblock(sigmask(SIGCHLD)); ++#endif /* not HAVE_SIGACTION */ ++ ++ sigprocmask(SIG_BLOCK, &chld, &old); + if (!logfp) + logfp = stderr; /* initialize before possible first use */ + + va_start(ap, fmt); + real_plog(XLOG_DEBUG, fmt, ap); + va_end(ap); ++ ++#ifdef HAVE_SIGACTION ++ sigprocmask(SIG_SETMASK, &old, NULL); ++#else /* not HAVE_SIGACTION */ ++ mask = sigblock(sigmask(SIGCHLD)); ++#endif /* not HAVE_SIGACTION */ + } + #endif /* DEBUG */ + +@@ -435,14 +454,33 @@ dplog(const char *fmt, ...) + void + plog(int lvl, const char *fmt, ...) + { ++#ifdef HAVE_SIGACTION ++ sigset_t old, chld; ++#else /* not HAVE_SIGACTION */ ++ int mask; ++#endif /* not HAVE_SIGACTION */ + va_list ap; + ++#ifdef HAVE_SIGACTION ++ sigemptyset(&chld); ++ sigaddset(&chld, SIGCHLD); ++ sigprocmask(SIG_BLOCK, &chld, &old); ++#else /* not HAVE_SIGACTION */ ++ mask = sigblock(sigmask(SIGCHLD)); ++#endif /* not HAVE_SIGACTION */ ++ + if (!logfp) + logfp = stderr; /* initialize before possible first use */ + + va_start(ap, fmt); + real_plog(lvl, fmt, ap); + va_end(ap); ++ ++#ifdef HAVE_SIGACTION ++ sigprocmask(SIG_SETMASK, &old, NULL); ++#else /* not HAVE_SIGACTION */ ++ sigsetmask(mask); ++#endif /* not HAVE_SIGACTION */ + } + + diff --git a/am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch b/am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch new file mode 100644 index 0000000..76e438f --- /dev/null +++ b/am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch @@ -0,0 +1,22 @@ +am-utils-6.2-1.git.e03592f0 - fix get_nfs_version() message + +From: Ian Kent + +Fix a error message formating mistake in get_nfs_version(). +--- + conf/transp/transp_sockets.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index d5e729f..5036b26 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -478,7 +478,7 @@ try_again: + } + + if (errstr) { +- plog(XLOG_INFO, "get_nfs_version NFS(%d,%s) failed for %s%s", ++ plog(XLOG_INFO, "get_nfs_version NFS(%d,%s) failed for %s: %s", + (int) nfs_version, proto, host, errstr); + if (again) { + #ifdef HAVE_FS_NFS3 diff --git a/am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch b/am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch new file mode 100644 index 0000000..c5878bf --- /dev/null +++ b/am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch @@ -0,0 +1,152 @@ +diff -up am-utils-6.1.5/amd/map.c.orig am-utils-6.1.5/amd/map.c +--- am-utils-6.1.5/amd/map.c.orig 2014-03-19 19:34:23.000000000 +0800 ++++ am-utils-6.1.5/amd/map.c 2014-03-19 19:44:17.918101095 +0800 +@@ -687,68 +687,80 @@ make_root_node(void) + void + umount_exported(void) + { +- int i; ++ int i, work_done; + +- for (i = last_used_map; i >= 0; --i) { +- am_node *mp = exported_ap[i]; +- mntfs *mf; ++ do { ++ work_done = 0; + +- if (!mp) +- continue; ++ for (i = last_used_map; i >= 0; --i) { ++ am_node *mp = exported_ap[i]; ++ mntfs *mf; + +- mf = mp->am_mnt; +- if (mf->mf_flags & MFF_UNMOUNTING) { +- /* +- * If this node is being unmounted then just ignore it. However, +- * this could prevent amd from finishing if the unmount gets blocked +- * since the am_node will never be free'd. am_unmounted needs +- * telling about this possibility. - XXX +- */ +- continue; +- } ++ if (!mp) ++ continue; + +- if (!(mf->mf_fsflags & FS_DIRECTORY)) + /* +- * When shutting down this had better +- * look like a directory, otherwise it +- * can't be unmounted! ++ * Wait for children to be removed first + */ +- mk_fattr(&mp->am_fattr, NFDIR); ++ if (mp->am_child) ++ continue; + +- if ((--immediate_abort < 0 && +- !(mp->am_flags & AMF_ROOT) && mp->am_parent) || +- (mf->mf_flags & MFF_RESTART)) { ++ mf = mp->am_mnt; ++ if (mf->mf_flags & MFF_UNMOUNTING) { ++ /* ++ * If this node is being unmounted then just ignore it. However, ++ * this could prevent amd from finishing if the unmount gets blocked ++ * since the am_node will never be free'd. am_unmounted needs ++ * telling about this possibility. - XXX ++ */ ++ continue; ++ } + +- /* +- * Just throw this node away without bothering to unmount it. If +- * the server is not known to be up then don't discard the mounted +- * on directory or Amd might hang... +- */ +- if (mf->mf_server && ++ if (!(mf->mf_fsflags & FS_DIRECTORY)) ++ /* ++ * When shutting down this had better ++ * look like a directory, otherwise it ++ * can't be unmounted! ++ */ ++ mk_fattr(&mp->am_fattr, NFDIR); ++ ++ if ((--immediate_abort < 0 && ++ !(mp->am_flags & AMF_ROOT) && mp->am_parent) || ++ (mf->mf_flags & MFF_RESTART)) { ++ ++ work_done++; ++ ++ /* ++ * Just throw this node away without bothering to unmount it. If ++ * the server is not known to be up then don't discard the mounted ++ * on directory or Amd might hang... ++ */ ++ if (mf->mf_server && + (mf->mf_server->fs_flags & (FSF_DOWN | FSF_VALID)) != FSF_VALID) + mf->mf_flags &= ~MFF_MKMNT; +- if (gopt.flags & CFM_UNMOUNT_ON_EXIT || mp->am_flags & AMF_AUTOFS) { +- plog(XLOG_INFO, "on-exit attempt to unmount %s", mf->mf_mount); +- /* +- * use unmount_mp, not unmount_node, so that unmounts be +- * backgrounded as needed. +- */ +- unmount_mp((opaque_t) mp); +- } else { +- am_unmounted(mp); +- } +- exported_ap[i] = 0; +- } else { +- /* +- * Any other node gets forcibly timed out. +- */ +- mp->am_flags &= ~AMF_NOTIMEOUT; +- mp->am_mnt->mf_flags &= ~MFF_RSTKEEP; +- mp->am_ttl = 0; +- mp->am_timeo = 1; +- mp->am_timeo_w = 0; +- } +- } ++ if (gopt.flags & CFM_UNMOUNT_ON_EXIT || mp->am_flags & AMF_AUTOFS) { ++ plog(XLOG_INFO, "on-exit attempt to unmount %s", mf->mf_mount); ++ /* ++ * use unmount_mp, not unmount_node, so that unmounts be ++ * backgrounded as needed. ++ */ ++ unmount_mp((opaque_t) mp); ++ } else { ++ am_unmounted(mp); ++ } ++ exported_ap[i] = NULL; ++ } else { ++ /* ++ * Any other node gets forcibly timed out. ++ */ ++ mp->am_flags &= ~AMF_NOTIMEOUT; ++ mp->am_mnt->mf_flags &= ~MFF_RSTKEEP; ++ mp->am_ttl = 0; ++ mp->am_timeo = 1; ++ mp->am_timeo_w = 0; ++ } ++ } ++ } while (work_done); + } + + +diff -U0 am-utils-6.1.5/ChangeLog.orig am-utils-6.1.5/ChangeLog +--- am-utils-6.1.5/ChangeLog.orig 2006-05-12 01:25:47.000000000 +0800 ++++ am-utils-6.1.5/ChangeLog 2014-03-19 19:36:27.335598581 +0800 +@@ -0,0 +1,12 @@ ++2009-12-10 Christos Zoulas ++ ++ * Make sure to remove nodes in the proper order when going ++ down. Depending on what order the nodes got created it's ++ possible that the parent of a node has a bigger am_mapno ++ (index in exported_ap[]) so that it gets freed before ++ its child while the child's am_parent pointer is still ++ pointing to the already freed block of memory. ++ This change makes sure that umount_exported() cleans up ++ all children of a node first before freeing the node. ++ From: Krisztian Kovacs ++ diff --git a/am-utils.spec b/am-utils.spec index 05659a4..6b326d8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 29%{?dist} +Release: 30%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -59,6 +59,17 @@ Patch8: am-utils-6.1.5-use-_hardened_build-flag.patch # Fix documentation build fails. Patch9: am-utils-6.1.5-texinfo-documentation-build-fixes.patch +Patch10: am-utils-6.1.5-dont-background-autofs-umount.patch +Patch11: am-utils-6.1.5-check-fh-on-umount-succeeded.patch +Patch12: am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch +Patch13: am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch +Patch14: am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch +Patch15: am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch +Patch16: am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch +Patch17: am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch +# Don't attempt to use v5 protocol +Patch18: am-utils-6.1.5-fix-autofs-proto-version-define.patch + %global _hardened_build 1 # We need to filter out some perl requirements for now. @@ -88,6 +99,15 @@ mounting and unmounting filesystems. %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -199,6 +219,18 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Mar 20 2014 Ian Kent - 5:6.1.5-30 +- bz1074376 - am-utils will no longer start due to missing NFSv2 + - dont background autofs umount. + - check fh on umount succeeded. + - handle ENOENT umount return for autofs mounts. + - fix get_nfs_version() message. + - fix debug log deadlock. + - linux umount wait on ebusy. + - make sure to remove nodes in the proper order when going down. + - fix handle failed umount on exit. + - fix autofs proto version define. + * Sat Aug 03 2013 Fedora Release Engineering - 5:6.1.5-29 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild From cd86fe29a8419d3c9ac931ccae2f952894d8a20c Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 6 Jun 2014 19:33:43 -0500 Subject: [PATCH 076/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 6b326d8..16b81e2 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 30%{?dist} +Release: 31%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -219,6 +219,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sat Jun 07 2014 Fedora Release Engineering - 5:6.1.5-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Fri Mar 20 2014 Ian Kent - 5:6.1.5-30 - bz1074376 - am-utils will no longer start due to missing NFSv2 - dont background autofs umount. From 0173213b27495b037d434e1389d419a76bb7055b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 15 Aug 2014 20:26:01 +0000 Subject: [PATCH 077/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 16b81e2..2a94084 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,7 +1,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.1.5 -Release: 31%{?dist} +Release: 32%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -219,6 +219,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Aug 15 2014 Fedora Release Engineering - 5:6.1.5-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + * Sat Jun 07 2014 Fedora Release Engineering - 5:6.1.5-31 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild From 14a4da86dd3f731c40c927f0dac10ee9d0a89f0d Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 21 Oct 2014 18:23:01 +0800 Subject: [PATCH 078/157] - Update am-utils to current git to get needed NFSv3 functionality. --- .gitignore | 1 + am-utils-6.1.5-UTS_RELEASE.patch | 17 -- am-utils-6.1.5-buildsys.patch | 123 -------------- ...s-6.1.5-check-fh-on-umount-succeeded.patch | 24 --- ...-6.1.5-dont-background-autofs-umount.patch | 35 ---- am-utils-6.1.5-expn-temp.patch | 26 --- ....1.5-fix-autofs-proto-version-define.patch | 28 ---- ...OENT-umount-return-for-autofs-mounts.patch | 33 ---- am-utils-6.1.5-libwarp.patch | 69 -------- am-utils-6.1.5-nfs-version.patch | 27 ---- am-utils-6.1.5-nolock-toplvl.patch | 64 -------- am-utils-6.1.5-rmtab-temp.patch | 15 -- ....5-texinfo-documentation-build-fixes.patch | 12 -- am-utils-6.1.5-use-_hardened_build-flag.patch | 103 ------------ ...fb4-fix-handle-failed-umount-on-exit.patch | 13 -- ....9b652fb4-linux-umount-wait-on-ebusy.patch | 50 ------ ....git.e03592f0-fix-debug-log-deadlock.patch | 82 ---------- ...e03592f0-fix-get_nfs_version-message.patch | 22 --- ...-in-the-proper-order-when-going-down.patch | 152 ------------------ am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch | 36 +++++ am-utils.conf | 2 + am-utils.spec | 74 +++------ sources | 2 +- 23 files changed, 58 insertions(+), 952 deletions(-) delete mode 100644 am-utils-6.1.5-UTS_RELEASE.patch delete mode 100644 am-utils-6.1.5-buildsys.patch delete mode 100644 am-utils-6.1.5-check-fh-on-umount-succeeded.patch delete mode 100644 am-utils-6.1.5-dont-background-autofs-umount.patch delete mode 100644 am-utils-6.1.5-expn-temp.patch delete mode 100644 am-utils-6.1.5-fix-autofs-proto-version-define.patch delete mode 100644 am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch delete mode 100644 am-utils-6.1.5-libwarp.patch delete mode 100644 am-utils-6.1.5-nfs-version.patch delete mode 100644 am-utils-6.1.5-nolock-toplvl.patch delete mode 100644 am-utils-6.1.5-rmtab-temp.patch delete mode 100644 am-utils-6.1.5-texinfo-documentation-build-fixes.patch delete mode 100644 am-utils-6.1.5-use-_hardened_build-flag.patch delete mode 100644 am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch delete mode 100644 am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch delete mode 100644 am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch delete mode 100644 am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch delete mode 100644 am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch create mode 100644 am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch diff --git a/.gitignore b/.gitignore index 278b5d9..9ee960c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ am-utils-6.1.5.tar.gz *~ *.log *.rpm +/am-utils-6.2.0-1.git.bb13dea6.tar.gz diff --git a/am-utils-6.1.5-UTS_RELEASE.patch b/am-utils-6.1.5-UTS_RELEASE.patch deleted file mode 100644 index 13b0113..0000000 --- a/am-utils-6.1.5-UTS_RELEASE.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- am-utils-6.1.5/m4/macros/linux_headers.m4.kzak 2005-02-19 22:38:58.000000000 +0100 -+++ am-utils-6.1.5/m4/macros/linux_headers.m4 2006-12-18 21:28:04.000000000 +0100 -@@ -14,7 +14,14 @@ - ], - [ - if (argc > 1) -+#ifdef UTS_RELEASE - printf("%s", UTS_RELEASE); -+#else -+# define AMU_MA(a) ((a) >> 16) -+# define AMU_MI(a) (((a) & 0xffff) >> 8) -+# define AMU_PL(a) ((a) & 0xff) -+ printf("%d.%d.%d", AMU_MA(LINUX_VERSION_CODE), AMU_MI(LINUX_VERSION_CODE), AMU_PL(LINUX_VERSION_CODE)); -+#endif - ], - [ host_header_version=$value ], - [ echo diff --git a/am-utils-6.1.5-buildsys.patch b/am-utils-6.1.5-buildsys.patch deleted file mode 100644 index 09d4a17..0000000 --- a/am-utils-6.1.5-buildsys.patch +++ /dev/null @@ -1,123 +0,0 @@ -diff -up am-utils-6.1.new/bootstrap.kzak am-utils-6.1.new/bootstrap ---- am-utils-6.1.new/bootstrap.kzak 2003-10-11 08:02:04.000000000 +0200 -+++ am-utils-6.1.new/bootstrap 2008-05-21 12:16:36.000000000 +0200 -@@ -28,21 +28,13 @@ rm -fr autom4te.cache autom4te-*.cache - # generate acinclude.m4 file - echo "AMU: prepare acinclude.m4..." - test -f acinclude.m4 && mv -f acinclude.m4 acinclude.m4.old --(cd m4/macros -- for i in HEADER *.m4; do -- cat $i -- echo -- echo -- done -- cat TRAILER --) > acinclude.m4 - - # generate aclocal.m4 file - echo "AMU: aclocal..." - test -f aclocal.m4 && mv -f aclocal.m4 aclocal.m4.old - # show version - aclocal --version 2>&1 | head -1 --if aclocal ; then -+if aclocal -I m4/macros ; then - : - else - echo "aclocal command failed. fix errors and rerun $0." -@@ -60,7 +52,7 @@ autoconf configure.in > configure.new 2> - CUTWARNMSG1="warning: AC_PROG_LEX invoked multiple times|do not use m4_(patsubst|regexp):" - egrep -v "${CUTWARNMSG1}" ${LOG} > ${LOG}.new - mv ${LOG}.new ${LOG} --if test -s ${LOG}; then -+if false && test -s ${LOG}; then - echo "AUTOCONF ERRORS (MUST FIX):" - cat ${LOG} - rm -f ${LOG} -@@ -80,7 +72,7 @@ autoheader configure.in > config.h.in 2> - CUTWARNMSG2="autoheader: \`config.h.in' is updated" - egrep -v "${CUTWARNMSG2}" ${LOG} > ${LOG}.new - mv ${LOG}.new ${LOG} --if test -s ${LOG}; then -+if false && test -s ${LOG}; then - echo "AUTOHEADER ERRORS (MUST FIX):" - cat ${LOG} - rm -f ${LOG} -diff -up am-utils-6.1.new/configure.in.kzak am-utils-6.1.new/configure.in ---- am-utils-6.1.new/configure.in.kzak 2006-05-11 19:25:47.000000000 +0200 -+++ am-utils-6.1.new/configure.in 2008-05-21 20:52:48.000000000 +0200 -@@ -15,6 +15,7 @@ dnl new init style: PACKAGE, VERSION, BU - AC_INIT([am-utils], - sinclude([vers.m4]), - [https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) -+ - AC_MSG_NOTICE(*** INITIALIZATION ***) - AC_CONFIG_SRCDIR([amd/amd.c]) - AM_CONFIG_HEADER(config.h) -@@ -1286,6 +1287,8 @@ AMU_CHECK_LIBWRAP_SEVERITY - fi - dnl ====================================================================== - -+AMU_HDR_TEMPLATES -+ - dnl ********* - AMU_SAVE_STATE - dnl ********* -diff -up am-utils-6.1.new/m4/macros/save_state.m4.kzak am-utils-6.1.new/m4/macros/save_state.m4 ---- am-utils-6.1.new/m4/macros/save_state.m4.kzak 2002-01-07 08:36:24.000000000 +0100 -+++ am-utils-6.1.new/m4/macros/save_state.m4 2008-05-21 12:16:36.000000000 +0200 -@@ -1,12 +1,12 @@ - dnl ###################################################################### - dnl AC_SAVE_STATE: save confdefs.h onto dbgcf.h and write $ac_cv_* cache - dnl variables that are known so far. --define(AMU_SAVE_STATE, --AC_MSG_NOTICE(*** SAVING CONFIGURE STATE ***) -+AC_DEFUN([AMU_SAVE_STATE], -+[AC_MSG_NOTICE(*** SAVING CONFIGURE STATE ***) - if test -f confdefs.h - then - cp confdefs.h dbgcf.h - fi --[AC_CACHE_SAVE] -+AC_CACHE_SAVE] - ) - dnl ====================================================================== -diff -up am-utils-6.1.new/m4/macros/cache_check_dynamic.m4.kzak am-utils-6.1.new/m4/macros/cache_check_dynamic.m4 ---- am-utils-6.1.new/m4/macros/cache_check_dynamic.m4.kzak 2002-06-21 19:12:14.000000000 +0200 -+++ am-utils-6.1.new/m4/macros/cache_check_dynamic.m4 2008-05-21 12:16:36.000000000 +0200 -@@ -8,7 +8,7 @@ dnl after COMMANDS are run. - dnl - dnl ====================================================================== - dnl AMU_CACHE_CHECK_DYNAMIC(MESSAGE, CACHE-ID, COMMANDS) --define(AMU_CACHE_CHECK_DYNAMIC, -+AC_DEFUN([AMU_CACHE_CHECK_DYNAMIC], - [ - ac_tmp=`echo $2` - if eval "test \"`echo '$''{'$ac_tmp'+set}'`\" = set"; then -diff -up am-utils-6.1.new/m4/macros/header_templates.m4.kzak am-utils-6.1.new/m4/macros/header_templates.m4 ---- am-utils-6.1.new/m4/macros/header_templates.m4.kzak 2005-10-26 05:33:12.000000000 +0200 -+++ am-utils-6.1.new/m4/macros/header_templates.m4 2008-05-21 20:37:28.000000000 +0200 -@@ -1,5 +1,7 @@ - dnl FILE: m4/macros/header_templates.m4 - dnl defines descriptions for various am-utils specific macros -+AC_DEFUN([AMU_HDR_TEMPLATES], -+[ - - AH_TEMPLATE([HAVE_AMU_FS_AUTO], - [Define if have automount filesystem]) -@@ -997,3 +999,5 @@ AH_TEMPLATE([NEED_LIBWRAP_SEVERITY_VARIA - - AH_TEMPLATE([HAVE_EXTERN_LDAP_ENABLE_CACHE], - [does extern definition for ldap_enable_cache() exist?]) -+ -+]) -diff -up am-utils-6.1.new/m4/macros/mount_headers.m4.kzak am-utils-6.1.new/m4/macros/mount_headers.m4 ---- am-utils-6.1.new/m4/macros/mount_headers.m4.kzak 2002-01-07 08:36:23.000000000 +0100 -+++ am-utils-6.1.new/m4/macros/mount_headers.m4 2008-05-21 12:16:36.000000000 +0200 -@@ -1,6 +1,6 @@ - dnl ###################################################################### - dnl an M4 macro to include a list of common headers being used everywhere --define(AMU_MOUNT_HEADERS, -+AC_DEFUN([AMU_MOUNT_HEADERS], - [ - #include "${srcdir}/include/mount_headers1.h" - #include AMU_NFS_PROTOCOL_HEADER diff --git a/am-utils-6.1.5-check-fh-on-umount-succeeded.patch b/am-utils-6.1.5-check-fh-on-umount-succeeded.patch deleted file mode 100644 index 5325438..0000000 --- a/am-utils-6.1.5-check-fh-on-umount-succeeded.patch +++ /dev/null @@ -1,24 +0,0 @@ - - -From: Ian Kent - - ---- - conf/autofs/autofs_linux.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c -index 5e6a171..fd5dbc6 100644 ---- a/conf/autofs/autofs_linux.c -+++ b/conf/autofs/autofs_linux.c -@@ -753,6 +753,10 @@ autofs_umount_succeeded(am_node *mp) - autofs_fh_t *fh = mp->am_parent->am_autofs_fh; - struct autofs_pending_umount **pp, *p; - -+ /* Already gone? */ -+ if (fh == NULL) -+ return 0; -+ - pp = &fh->pending_umounts; - while (*pp && !STREQ((*pp)->name, mp->am_name)) - pp = &(*pp)->next; diff --git a/am-utils-6.1.5-dont-background-autofs-umount.patch b/am-utils-6.1.5-dont-background-autofs-umount.patch deleted file mode 100644 index 7f8cde7..0000000 --- a/am-utils-6.1.5-dont-background-autofs-umount.patch +++ /dev/null @@ -1,35 +0,0 @@ -am-utils-6.1.5 - dont background autofs umount - -From: Ian Kent - -When using an autofs multi-level mount map amd can fail to umount -NFS leaf mounts causing shutdown to fail. It also can cause amd to -SEGV because, even though umounts fail, the autofs mount control -structure is freed and a later umount attempt doesn't check if this -struct is valid before using it. - -The cause of the umount failure appears to be the background umount -of NFS mounts at the leaf of the tree not finishing before the autofs -file system mounts above are attempted. - -It isn't worth adding a patch to check if the autofs mount control -structure is valid because if it isn't, in this case, amd doesn't -crash but still becomes unresponsive. ---- - amd/map.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/amd/map.c b/amd/map.c -index 2fad4b7..8e86b39 100644 ---- a/amd/map.c -+++ b/amd/map.c -@@ -946,7 +946,8 @@ unmount_mp(am_node *mp) - #endif /* HAVE_FS_AUTOFS */ - - if ((mf->mf_fsflags & FS_UBACKGROUND) && -- (mf->mf_flags & MFF_MOUNTED)) { -+ (mf->mf_flags & MFF_MOUNTED) && -+ !(mf->mf_flags & MFF_ON_AUTOFS)) { - dlog("Trying unmount in background"); - run_task(unmount_node, (opaque_t) mp, - free_map_if_success, (opaque_t) mp); diff --git a/am-utils-6.1.5-expn-temp.patch b/am-utils-6.1.5-expn-temp.patch deleted file mode 100644 index a2f1b94..0000000 --- a/am-utils-6.1.5-expn-temp.patch +++ /dev/null @@ -1,26 +0,0 @@ - -CVE-2008-1078 am-utils: insecure usage of temporary files - -Addresses-Red-Hat-Bugzilla: #435420 -Signed-off-by: Karel Zak - -diff -up am-utils-6.1.5/scripts/expn.in.kzak am-utils-6.1.5/scripts/expn.in ---- am-utils-6.1.5/scripts/expn.in.kzak 2008-05-29 12:43:19.000000000 +0200 -+++ am-utils-6.1.5/scripts/expn.in 2008-05-29 12:44:20.000000000 +0200 -@@ -9,6 +9,7 @@ - # hardcoded constants, should work fine for BSD-based systems - #require 'sys/socket.ph'; # perl 4 - use Socket; # perl 5 -+use Fcntl - $AF_INET = &AF_INET; - $SOCK_STREAM = &SOCK_STREAM; - -@@ -1009,7 +1010,7 @@ sub mxlookup - } - - $0 = "$av0 - nslookup of $server"; -- open(T,">/tmp/expn$$") || die "open > /tmp/expn$$: $!\n"; -+ sysopen(T,"/tmp/expn$$", O_EXCL | O_CREAT) || die "open > /tmp/expn$$: $!\n"; - print T "set querytype=MX\n"; - print T "$server\n"; - close(T); diff --git a/am-utils-6.1.5-fix-autofs-proto-version-define.patch b/am-utils-6.1.5-fix-autofs-proto-version-define.patch deleted file mode 100644 index 8b04bcc..0000000 --- a/am-utils-6.1.5-fix-autofs-proto-version-define.patch +++ /dev/null @@ -1,28 +0,0 @@ -am-utils-6.1.5 - fix autofs proto version define - -From: Ian Kent - -I don't think am-utils works with autofs protocol version 5. ---- - - conf/autofs/autofs_linux.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - - -diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c -index f56befa..eeb211f 100644 ---- a/conf/autofs/autofs_linux.c -+++ b/conf/autofs/autofs_linux.c -@@ -59,8 +59,11 @@ - */ - - #define AUTOFS_MIN_VERSION 3 -+#if AUTOFS_MAX_PROTO_VERSION >= 5 -+#define AUTOFS_MAX_VERSION 4 -+#else - #define AUTOFS_MAX_VERSION AUTOFS_MAX_PROTO_VERSION -- -+#endif - - /* - * STRUCTURES: diff --git a/am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch b/am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch deleted file mode 100644 index 5785898..0000000 --- a/am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch +++ /dev/null @@ -1,33 +0,0 @@ -am-utils-6.1.5 - handle ENOENT umount return for autofs mounts - -From: Ian Kent - -An ENOENT return from umount(2) means the kernel path walk couldn't -resolve the path of the mount to a dentry. In that case there can't -be an autofs waitq entry waiting for notification, since there's no -dentry, so don't even try to notify the kernel. ---- - amd/map.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/amd/map.c b/amd/map.c -index 8e86b39..e6d14b8 100644 ---- a/amd/map.c -+++ b/amd/map.c -@@ -873,10 +873,12 @@ free_map_if_success(int rc, int term, opaque_t arg) - else - plog(XLOG_ERROR, "%s: unmount: %s", mp->am_path, strerror(rc)); - #ifdef HAVE_FS_AUTOFS -- if (mf->mf_flags & MFF_IS_AUTOFS) -- autofs_get_mp(mp); -- if (mp->am_flags & AMF_AUTOFS) -- autofs_umount_failed(mp); -+ if (rc != ENOENT) { -+ if (mf->mf_flags & MFF_IS_AUTOFS) -+ autofs_get_mp(mp); -+ if (mp->am_flags & AMF_AUTOFS) -+ autofs_umount_failed(mp); -+ } - #endif /* HAVE_FS_AUTOFS */ - amd_stats.d_uerr++; - } else { diff --git a/am-utils-6.1.5-libwarp.patch b/am-utils-6.1.5-libwarp.patch deleted file mode 100644 index 9d13d0f..0000000 --- a/am-utils-6.1.5-libwarp.patch +++ /dev/null @@ -1,69 +0,0 @@ -diff -up am-utils-6.1.5/amd/amq_svc.c.kzak am-utils-6.1.5/amd/amq_svc.c ---- am-utils-6.1.5/amd/amq_svc.c.kzak 2006-01-02 19:40:31.000000000 +0100 -+++ am-utils-6.1.5/amd/amq_svc.c 2010-03-01 12:43:25.000000000 +0100 -@@ -65,47 +65,17 @@ int allow_severity=0, deny_severity=0; - * Returns: 1=allowed, 0=denied. - */ - static int --amqsvc_is_client_allowed(const struct sockaddr_in *addr, char *remote) -+amqsvc_is_client_allowed(const struct sockaddr_in *addr) - { -- struct hostent *h; -- char *name = NULL, **ad; -- int ret = 0; /* default is 0==denied */ -- -- /* Check IP address */ -- if (hosts_ctl(AMD_SERVICE_NAME, "", remote, "")) { -- ret = 1; -- goto out; -- } -- /* Get address */ -- if (!(h = gethostbyaddr((const char *)&(addr->sin_addr), -- sizeof(addr->sin_addr), -- AF_INET))) -- goto out; -- if (!(name = strdup(h->h_name))) -- goto out; -- /* Paranoia check */ -- if (!(h = gethostbyname(name))) -- goto out; -- for (ad = h->h_addr_list; *ad; ad++) -- if (!memcmp(*ad, &(addr->sin_addr), h->h_length)) -- break; -- if (!*ad) -- goto out; -- if (hosts_ctl(AMD_SERVICE_NAME, "", h->h_name, "")) { -- return 1; -- goto out; -- } -- /* Check aliases */ -- for (ad = h->h_aliases; *ad; ad++) -- if (hosts_ctl(AMD_SERVICE_NAME, "", *ad, "")) { -- return 1; -- goto out; -- } -+ struct request_info req; -+ -+ request_init(&req, RQ_DAEMON, AMD_SERVICE_NAME, RQ_CLIENT_SIN, addr, 0); -+ sock_methods(&req); -+ -+ if (hosts_access(&req)) -+ return 1; - -- out: -- if (name) -- XFREE(name); -- return ret; -+ return 0; - } - #endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ - -@@ -127,7 +97,7 @@ amq_program_1(struct svc_req *rqstp, SVC - struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt); - char *remote_hostname = inet_ntoa(remote_addr->sin_addr); - -- if (!amqsvc_is_client_allowed(remote_addr, remote_hostname)) { -+ if (!amqsvc_is_client_allowed(remote_addr)) { - plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); - svcerr_auth(transp, AUTH_FAILED); - return; diff --git a/am-utils-6.1.5-nfs-version.patch b/am-utils-6.1.5-nfs-version.patch deleted file mode 100644 index a2ce21c..0000000 --- a/am-utils-6.1.5-nfs-version.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- am-utils-6.1.5/conf/mount/mount_linux.c.kzak 2006-08-24 15:59:24.000000000 +0200 -+++ am-utils-6.1.5/conf/mount/mount_linux.c 2006-08-24 15:59:32.000000000 +0200 -@@ -277,7 +277,7 @@ - int errorcode; - - /* Fake some values for linux */ -- mnt_data->version = NFS_MOUNT_VERSION; -+ mnt_data->version = AMD_NFS_MOUNT_VERSION; - if (!mnt_data->timeo) { - #ifdef MNT2_NFS_OPT_TCP - if (mnt_data->flags & MNT2_NFS_OPT_TCP) ---- am-utils-6.1.5/conf/nfs_prot/nfs_prot_linux.h.kzak 2006-08-24 15:55:02.000000000 +0200 -+++ am-utils-6.1.5/conf/nfs_prot/nfs_prot_linux.h 2006-08-24 15:58:27.000000000 +0200 -@@ -241,6 +241,13 @@ - u_char data[FHSIZE3]; - }; - -+/* version of our nsf_mount_data struct -+ * -- we cannot use NFS_MOUNT_VERSION from system kernel -+ * headers, because there could version that doesn't -+ * match with nfs_args struct. -+ */ -+#define AMD_NFS_MOUNT_VERSION 4 -+ - struct nfs_args { - int version; /* 1 */ - int fd; /* 1 */ diff --git a/am-utils-6.1.5-nolock-toplvl.patch b/am-utils-6.1.5-nolock-toplvl.patch deleted file mode 100644 index 1606efd..0000000 --- a/am-utils-6.1.5-nolock-toplvl.patch +++ /dev/null @@ -1,64 +0,0 @@ - -amd does not work with kernel 2.6.25 - -Just after start-up, one can find the following in /var/log/messages: - -Jun 10 11:36:28 tantale amd[18589]: '/net': mount: No locks available -Jun 10 11:36:29 tantale kernel: Invalid hostname "pid18588@tantale:/net" in NFS lock request - -From: Philippe Troin -Addresses: https://bugzilla.am-utils.org/show_bug.cgi?id=612 -Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=450754 -Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=640383 -Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=602938 - ---- - amd/amfs_toplvl.c | 5 ++++- - amd/autil.c | 8 ++++++-- - configure.in | 3 +++ - 3 files changed, 13 insertions(+), 3 deletions(-) - ---- am-utils-6.1.5.orig/amd/amfs_toplvl.c -+++ am-utils-6.1.5/amd/amfs_toplvl.c -@@ -226,7 +226,10 @@ amfs_toplvl_mount(am_node *mp, mntfs *mf - MNTTAB_OPT_RETRANS, gopt.amfs_auto_retrans[AMU_TYPE_TOPLVL]); - xstrlcat(opts, toplvl_opts, sizeof(opts)); - } -- -+#ifdef MNTTAB_OPT_NOLOCK -+ xstrlcat(opts, ",", sizeof(opts)); -+ xstrlcat(opts, MNTTAB_OPT_NOLOCK, sizeof(opts)); -+#endif /* MNTTAB_OPT_NOLOCK */ - #ifdef MNTTAB_OPT_NOAC - if (gopt.auto_attrcache == 0) { - xstrlcat(opts, ",", sizeof(opts)); ---- am-utils-6.1.5.orig/amd/autil.c -+++ am-utils-6.1.5/amd/autil.c -@@ -491,9 +491,13 @@ amfs_mount(am_node *mp, mntfs *mf, char - - /* - * Make a ``hostname'' string for the kernel -+ * -+ * Linux kernel since v2.6.19-rc1 (commit 8dead0dbd478f35fd943f3719591e5af1ac0950d) -+ * does not accept '/' in hostname in NFS lock requests. -+ * -- kzak@redhat.com, 06-Oct-2010 - */ -- xsnprintf(fs_hostname, sizeof(fs_hostname), "pid%ld@%s:%s", -- get_server_pid(), am_get_hostname(), dir); -+ xsnprintf(fs_hostname, sizeof(fs_hostname), "%s", am_get_hostname()); -+ - /* - * Most kernels have a name length restriction (64 bytes)... - */ ---- am-utils-6.1.5.orig/configure.in -+++ am-utils-6.1.5/configure.in -@@ -621,6 +621,9 @@ AC_CHECK_HEADERS([ \ - # ifndef __KERNEL__ - # define __KERNEL__ - # endif /* __KERNEL__ */ -+#ifdef HAVE_SYS_SOCKET_H -+# include -+#endif /* HAVE_SYS_SOCKET_H */ - #ifdef HAVE_LINUX_SOCKET_H - # include - #endif /* HAVE_LINUX_SOCKET_H */ diff --git a/am-utils-6.1.5-rmtab-temp.patch b/am-utils-6.1.5-rmtab-temp.patch deleted file mode 100644 index 64ef7ed..0000000 --- a/am-utils-6.1.5-rmtab-temp.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -ur am-utils-6.1.5.orig/scripts/fixrmtab.in am-utils-6.1.5/scripts/fixrmtab.in ---- am-utils-6.1.5.orig/scripts/fixrmtab.in 2006-08-18 16:24:53.000000000 -0400 -+++ am-utils-6.1.5/scripts/fixrmtab.in 2006-08-18 16:31:12.000000000 -0400 -@@ -11,7 +11,10 @@ - #set -x - - RMTAB=/etc/rmtab --TMP=/tmp/rmtab.$$ -+TMP=`mktemp /tmp/rmtab.XXXXXXXX` -+if [ x"$TMP" = "x" ] ; then -+ exit 1 -+fi - - if [ ! -f /etc/rmtab ]; then - exit 0 diff --git a/am-utils-6.1.5-texinfo-documentation-build-fixes.patch b/am-utils-6.1.5-texinfo-documentation-build-fixes.patch deleted file mode 100644 index 7305c7d..0000000 --- a/am-utils-6.1.5-texinfo-documentation-build-fixes.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up am-utils-6.1.5/doc/am-utils.texi.orig am-utils-6.1.5/doc/am-utils.texi ---- am-utils-6.1.5/doc/am-utils.texi.orig 2013-04-28 12:55:39.035902316 +0800 -+++ am-utils-6.1.5/doc/am-utils.texi 2013-04-28 12:57:13.865766455 +0800 -@@ -67,7 +67,7 @@ Copyright @copyright{} 1989 Jan-Simon Pe - Copyright @copyright{} 1989 Imperial College of Science, Technology & Medicine - @* - Copyright @copyright{} 1989 The Regents of the University of California. --@sp -+@sp 1 - All Rights Reserved. - @vskip 1ex - Permission to copy this document, or any portion of it, as diff --git a/am-utils-6.1.5-use-_hardened_build-flag.patch b/am-utils-6.1.5-use-_hardened_build-flag.patch deleted file mode 100644 index 668de88..0000000 --- a/am-utils-6.1.5-use-_hardened_build-flag.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff -up am-utils-6.1.5/amd/Makefile.am.orig am-utils-6.1.5/amd/Makefile.am ---- am-utils-6.1.5/amd/Makefile.am.orig 2013-04-28 11:00:46.447657616 +0800 -+++ am-utils-6.1.5/amd/Makefile.am 2013-04-28 11:01:13.435635544 +0800 -@@ -112,7 +112,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - AM_YFLAGS = -d - - # dependencies -diff -up am-utils-6.1.5/amq/Makefile.am.orig am-utils-6.1.5/amq/Makefile.am ---- am-utils-6.1.5/amq/Makefile.am.orig 2013-04-28 11:10:03.235036740 +0800 -+++ am-utils-6.1.5/amq/Makefile.am 2013-04-28 11:10:15.271022717 +0800 -@@ -22,7 +22,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - - # additional files to distribute and clean - EXTRA_DIST = $(man_MANS) -diff -up am-utils-6.1.5/fixmount/Makefile.am.orig am-utils-6.1.5/fixmount/Makefile.am ---- am-utils-6.1.5/fixmount/Makefile.am.orig 2013-04-28 11:10:31.786003486 +0800 -+++ am-utils-6.1.5/fixmount/Makefile.am 2013-04-28 11:10:43.373990002 +0800 -@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - - # additional files to distribute and clean - EXTRA_DIST = $(man_MANS) -diff -up am-utils-6.1.5/fsinfo/Makefile.am.orig am-utils-6.1.5/fsinfo/Makefile.am ---- am-utils-6.1.5/fsinfo/Makefile.am.orig 2013-04-28 11:10:58.384972545 +0800 -+++ am-utils-6.1.5/fsinfo/Makefile.am 2013-04-28 11:11:11.180957646 +0800 -@@ -43,7 +43,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - AM_YFLAGS = -d - - # dependencies -diff -up am-utils-6.1.5/hlfsd/Makefile.am.orig am-utils-6.1.5/hlfsd/Makefile.am ---- am-utils-6.1.5/hlfsd/Makefile.am.orig 2013-04-28 11:12:47.916845475 +0800 -+++ am-utils-6.1.5/hlfsd/Makefile.am 2013-04-28 11:13:12.632816898 +0800 -@@ -24,7 +24,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - - # additional files to distribute and clean - EXTRA_DIST = $(man_MANS) -diff -up am-utils-6.1.5/libamu/Makefile.am.orig am-utils-6.1.5/libamu/Makefile.am ---- am-utils-6.1.5/libamu/Makefile.am.orig 2013-04-28 10:47:29.683225080 +0800 -+++ am-utils-6.1.5/libamu/Makefile.am 2013-04-28 11:00:21.405678035 +0800 -@@ -69,13 +69,13 @@ libamu_la_DEPENDENCIES = @AMU_LIB_OBJS@ - - - # LDFLAGS should include standard ones plus LIBTOOL ones --AM_LDFLAGS = @LDFLAGS@ @LIBTOOL_LDFLAGS@ -+AM_LDFLAGS = @LIBTOOL_LDFLAGS@ - - INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - - # dependencies - $(libamu_la_OBJECTS) $(libamu_la_LIBADD): \ -diff -up am-utils-6.1.5/mk-amd-map/Makefile.am.orig am-utils-6.1.5/mk-amd-map/Makefile.am ---- am-utils-6.1.5/mk-amd-map/Makefile.am.orig 2013-04-28 11:13:28.858798119 +0800 -+++ am-utils-6.1.5/mk-amd-map/Makefile.am 2013-04-28 11:13:41.095783984 +0800 -@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - - # additional files to distribute and clean - EXTRA_DIST = $(man_MANS) -diff -up am-utils-6.1.5/wire-test/Makefile.am.orig am-utils-6.1.5/wire-test/Makefile.am ---- am-utils-6.1.5/wire-test/Makefile.am.orig 2013-04-28 11:14:00.265761847 +0800 -+++ am-utils-6.1.5/wire-test/Makefile.am 2013-04-28 11:14:53.069700943 +0800 -@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include - - # allow users to add their own flags via "configure --enable-am-flags=ARG" - AMU_CFLAGS = @AMU_CFLAGS@ --AM_CFLAGS = @CFLAGS@ $(AMU_CFLAGS) -+AM_CFLAGS = $(AMU_CFLAGS) - - # additional files to distribute and clean - EXTRA_DIST = $(man_MANS) diff --git a/am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch b/am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch deleted file mode 100644 index 7ece413..0000000 --- a/am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up am-utils-6.1.5/amd/map.c.orig am-utils-6.1.5/amd/map.c ---- am-utils-6.1.5/amd/map.c.orig 2014-03-19 19:45:45.000000000 +0800 -+++ am-utils-6.1.5/amd/map.c 2014-03-19 19:47:42.741848068 +0800 -@@ -748,7 +748,8 @@ umount_exported(void) - } else { - am_unmounted(mp); - } -- exported_ap[i] = NULL; -+ if (!(mf->mf_flags && (MFF_UNMOUNTING|MFF_MOUNTED))) -+ exported_ap[i] = NULL; - } else { - /* - * Any other node gets forcibly timed out. diff --git a/am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch b/am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch deleted file mode 100644 index 3896c68..0000000 --- a/am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch +++ /dev/null @@ -1,50 +0,0 @@ -am-utils-6.2-0.git.9b652fb4 - linux umount wait on ebusy - -From: Ian Kent - -For some reason, when umounting autofs mounts after closing the ioctl -file handle, the kernel can return EBUSY for some small amount of time. - -This can cause umounts to incorrectly fail when in fact they should -succeed. - -Retrying for about a second and a half seems to work quite well. ---- - conf/umount/umount_linux.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/conf/umount/umount_linux.c b/conf/umount/umount_linux.c -index 782c2cd..81b0527 100644 ---- a/conf/umount/umount_linux.c -+++ b/conf/umount/umount_linux.c -@@ -63,6 +63,7 @@ umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags) - char loopstr[] = "loop="; - char *loopdev; - #endif /* HAVE_LOOP_DEVICE */ -+ unsigned int retries = 8; - - mp = mlist = read_mtab(mntdir, mnttabname); - -@@ -94,6 +95,7 @@ umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags) - unlock_mntlist(); - #endif /* MOUNT_TABLE_ON_FILE */ - -+again: - #if defined(HAVE_UMOUNT2) && defined(MNT2_GEN_OPT_DETACH) - /* - * If user asked to try forced unmounts, then do a quick check to see if -@@ -111,6 +113,14 @@ umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags) - } else - #endif /* defined(HAVE_UMOUNT2) && defined(MNT2_GEN_OPT_DETACH) */ - error = UNMOUNT_TRAP(mp_save->mnt); -+ -+ /* Linux kernel can be sluggish for some reason */ -+ if (error == EBUSY && retries--) { -+ struct timespec tm = {0, 200000000}; -+ nanosleep(&tm, NULL); -+ goto again; -+ } -+ - if (error < 0) { - plog(XLOG_WARNING, "unmount(%s) failed: %m", mp_save->mnt->mnt_dir); - switch ((error = errno)) { diff --git a/am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch b/am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch deleted file mode 100644 index 442442d..0000000 --- a/am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch +++ /dev/null @@ -1,82 +0,0 @@ -am-utils-6.2-1.git.e03592f0 - fix debug log deadlock - -From: Ian Kent - -It's possible (and likely) a SIGCHLD signal can arrive while in syslog(2) -and also attempt log log a message leading to deadlock. ---- - libamu/xutil.c | 38 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 38 insertions(+) - -diff --git a/libamu/xutil.c b/libamu/xutil.c -index b3e3a0f..0d9d2ec 100644 ---- a/libamu/xutil.c -+++ b/libamu/xutil.c -@@ -420,14 +420,33 @@ debug_option(char *opt) - void - dplog(const char *fmt, ...) - { -+#ifdef HAVE_SIGACTION -+ sigset_t old, chld; -+#else /* not HAVE_SIGACTION */ -+ int mask; -+#endif /* not HAVE_SIGACTION */ - va_list ap; - -+#ifdef HAVE_SIGACTION -+ sigemptyset(&chld); -+ sigaddset(&chld, SIGCHLD); -+#else /* not HAVE_SIGACTION */ -+ mask = sigblock(sigmask(SIGCHLD)); -+#endif /* not HAVE_SIGACTION */ -+ -+ sigprocmask(SIG_BLOCK, &chld, &old); - if (!logfp) - logfp = stderr; /* initialize before possible first use */ - - va_start(ap, fmt); - real_plog(XLOG_DEBUG, fmt, ap); - va_end(ap); -+ -+#ifdef HAVE_SIGACTION -+ sigprocmask(SIG_SETMASK, &old, NULL); -+#else /* not HAVE_SIGACTION */ -+ mask = sigblock(sigmask(SIGCHLD)); -+#endif /* not HAVE_SIGACTION */ - } - #endif /* DEBUG */ - -@@ -435,14 +454,33 @@ dplog(const char *fmt, ...) - void - plog(int lvl, const char *fmt, ...) - { -+#ifdef HAVE_SIGACTION -+ sigset_t old, chld; -+#else /* not HAVE_SIGACTION */ -+ int mask; -+#endif /* not HAVE_SIGACTION */ - va_list ap; - -+#ifdef HAVE_SIGACTION -+ sigemptyset(&chld); -+ sigaddset(&chld, SIGCHLD); -+ sigprocmask(SIG_BLOCK, &chld, &old); -+#else /* not HAVE_SIGACTION */ -+ mask = sigblock(sigmask(SIGCHLD)); -+#endif /* not HAVE_SIGACTION */ -+ - if (!logfp) - logfp = stderr; /* initialize before possible first use */ - - va_start(ap, fmt); - real_plog(lvl, fmt, ap); - va_end(ap); -+ -+#ifdef HAVE_SIGACTION -+ sigprocmask(SIG_SETMASK, &old, NULL); -+#else /* not HAVE_SIGACTION */ -+ sigsetmask(mask); -+#endif /* not HAVE_SIGACTION */ - } - - diff --git a/am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch b/am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch deleted file mode 100644 index 76e438f..0000000 --- a/am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch +++ /dev/null @@ -1,22 +0,0 @@ -am-utils-6.2-1.git.e03592f0 - fix get_nfs_version() message - -From: Ian Kent - -Fix a error message formating mistake in get_nfs_version(). ---- - conf/transp/transp_sockets.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c -index d5e729f..5036b26 100644 ---- a/conf/transp/transp_sockets.c -+++ b/conf/transp/transp_sockets.c -@@ -478,7 +478,7 @@ try_again: - } - - if (errstr) { -- plog(XLOG_INFO, "get_nfs_version NFS(%d,%s) failed for %s%s", -+ plog(XLOG_INFO, "get_nfs_version NFS(%d,%s) failed for %s: %s", - (int) nfs_version, proto, host, errstr); - if (again) { - #ifdef HAVE_FS_NFS3 diff --git a/am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch b/am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch deleted file mode 100644 index c5878bf..0000000 --- a/am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch +++ /dev/null @@ -1,152 +0,0 @@ -diff -up am-utils-6.1.5/amd/map.c.orig am-utils-6.1.5/amd/map.c ---- am-utils-6.1.5/amd/map.c.orig 2014-03-19 19:34:23.000000000 +0800 -+++ am-utils-6.1.5/amd/map.c 2014-03-19 19:44:17.918101095 +0800 -@@ -687,68 +687,80 @@ make_root_node(void) - void - umount_exported(void) - { -- int i; -+ int i, work_done; - -- for (i = last_used_map; i >= 0; --i) { -- am_node *mp = exported_ap[i]; -- mntfs *mf; -+ do { -+ work_done = 0; - -- if (!mp) -- continue; -+ for (i = last_used_map; i >= 0; --i) { -+ am_node *mp = exported_ap[i]; -+ mntfs *mf; - -- mf = mp->am_mnt; -- if (mf->mf_flags & MFF_UNMOUNTING) { -- /* -- * If this node is being unmounted then just ignore it. However, -- * this could prevent amd from finishing if the unmount gets blocked -- * since the am_node will never be free'd. am_unmounted needs -- * telling about this possibility. - XXX -- */ -- continue; -- } -+ if (!mp) -+ continue; - -- if (!(mf->mf_fsflags & FS_DIRECTORY)) - /* -- * When shutting down this had better -- * look like a directory, otherwise it -- * can't be unmounted! -+ * Wait for children to be removed first - */ -- mk_fattr(&mp->am_fattr, NFDIR); -+ if (mp->am_child) -+ continue; - -- if ((--immediate_abort < 0 && -- !(mp->am_flags & AMF_ROOT) && mp->am_parent) || -- (mf->mf_flags & MFF_RESTART)) { -+ mf = mp->am_mnt; -+ if (mf->mf_flags & MFF_UNMOUNTING) { -+ /* -+ * If this node is being unmounted then just ignore it. However, -+ * this could prevent amd from finishing if the unmount gets blocked -+ * since the am_node will never be free'd. am_unmounted needs -+ * telling about this possibility. - XXX -+ */ -+ continue; -+ } - -- /* -- * Just throw this node away without bothering to unmount it. If -- * the server is not known to be up then don't discard the mounted -- * on directory or Amd might hang... -- */ -- if (mf->mf_server && -+ if (!(mf->mf_fsflags & FS_DIRECTORY)) -+ /* -+ * When shutting down this had better -+ * look like a directory, otherwise it -+ * can't be unmounted! -+ */ -+ mk_fattr(&mp->am_fattr, NFDIR); -+ -+ if ((--immediate_abort < 0 && -+ !(mp->am_flags & AMF_ROOT) && mp->am_parent) || -+ (mf->mf_flags & MFF_RESTART)) { -+ -+ work_done++; -+ -+ /* -+ * Just throw this node away without bothering to unmount it. If -+ * the server is not known to be up then don't discard the mounted -+ * on directory or Amd might hang... -+ */ -+ if (mf->mf_server && - (mf->mf_server->fs_flags & (FSF_DOWN | FSF_VALID)) != FSF_VALID) - mf->mf_flags &= ~MFF_MKMNT; -- if (gopt.flags & CFM_UNMOUNT_ON_EXIT || mp->am_flags & AMF_AUTOFS) { -- plog(XLOG_INFO, "on-exit attempt to unmount %s", mf->mf_mount); -- /* -- * use unmount_mp, not unmount_node, so that unmounts be -- * backgrounded as needed. -- */ -- unmount_mp((opaque_t) mp); -- } else { -- am_unmounted(mp); -- } -- exported_ap[i] = 0; -- } else { -- /* -- * Any other node gets forcibly timed out. -- */ -- mp->am_flags &= ~AMF_NOTIMEOUT; -- mp->am_mnt->mf_flags &= ~MFF_RSTKEEP; -- mp->am_ttl = 0; -- mp->am_timeo = 1; -- mp->am_timeo_w = 0; -- } -- } -+ if (gopt.flags & CFM_UNMOUNT_ON_EXIT || mp->am_flags & AMF_AUTOFS) { -+ plog(XLOG_INFO, "on-exit attempt to unmount %s", mf->mf_mount); -+ /* -+ * use unmount_mp, not unmount_node, so that unmounts be -+ * backgrounded as needed. -+ */ -+ unmount_mp((opaque_t) mp); -+ } else { -+ am_unmounted(mp); -+ } -+ exported_ap[i] = NULL; -+ } else { -+ /* -+ * Any other node gets forcibly timed out. -+ */ -+ mp->am_flags &= ~AMF_NOTIMEOUT; -+ mp->am_mnt->mf_flags &= ~MFF_RSTKEEP; -+ mp->am_ttl = 0; -+ mp->am_timeo = 1; -+ mp->am_timeo_w = 0; -+ } -+ } -+ } while (work_done); - } - - -diff -U0 am-utils-6.1.5/ChangeLog.orig am-utils-6.1.5/ChangeLog ---- am-utils-6.1.5/ChangeLog.orig 2006-05-12 01:25:47.000000000 +0800 -+++ am-utils-6.1.5/ChangeLog 2014-03-19 19:36:27.335598581 +0800 -@@ -0,0 +1,12 @@ -+2009-12-10 Christos Zoulas -+ -+ * Make sure to remove nodes in the proper order when going -+ down. Depending on what order the nodes got created it's -+ possible that the parent of a node has a bigger am_mapno -+ (index in exported_ap[]) so that it gets freed before -+ its child while the child's am_parent pointer is still -+ pointing to the already freed block of memory. -+ This change makes sure that umount_exported() cleans up -+ all children of a node first before freeing the node. -+ From: Krisztian Kovacs -+ diff --git a/am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch b/am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch new file mode 100644 index 0000000..641822d --- /dev/null +++ b/am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch @@ -0,0 +1,36 @@ +diff -up am-utils-6.2.0-1.git.bb13dea6/bootstrap.orig am-utils-6.2.0-1.git.bb13dea6/bootstrap +--- am-utils-6.2.0-1.git.bb13dea6/bootstrap.orig 2014-10-21 05:42:37.128509523 -0400 ++++ am-utils-6.2.0-1.git.bb13dea6/bootstrap 2014-10-21 05:51:38.044996707 -0400 +@@ -59,13 +59,13 @@ fi + + echo "AMU: Fixing ylwrap..." + patch << \EOF +---- ylwrap.orig 2014-05-08 21:18:30.000000000 -0400 +-+++ ylwrap 2014-05-09 22:25:54.900240000 -0400 +-@@ -153,6 +153,22 @@ +- *[\\/]*) prog="`pwd`/$prog" ;; ++--- ylwrap.orig 2014-10-21 05:38:42.210204684 -0400 +++++ ylwrap 2014-10-21 05:44:45.602138698 -0400 ++@@ -161,6 +161,22 @@ ++ *[\\/]*) prog=`pwd`/$prog ;; + esac + +-+prefix=`echo $input | sed \ +++prefix=`echo $input | sed \ + + -e 's,^.*/,,g' \ + + -e 's/_gram.[yl]$/_/g' \ + + -e 's/_lex.[yl]$/_/g' \ +@@ -81,10 +81,10 @@ patch << \EOF + + flags="-p $prefix";; + +esac + + +- # FIXME: add hostname here for parallel makes that run commands on +- # other machines. But that might take us over the 14-char limit. + dirname=ylwrap$$ +-@@ -166,10 +182,13 @@ ++ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' ++ trap "ret=129; $do_exit" 1 ++@@ -172,10 +188,13 @@ + cd $dirname + + case $# in diff --git a/am-utils.conf b/am-utils.conf index a97d980..388e673 100644 --- a/am-utils.conf +++ b/am-utils.conf @@ -26,6 +26,8 @@ browsable_dirs = yes show_statfs_entries = no fully_qualified_hosts = no cache_duration = 300 +# Fedora doesn't support NFSv2, use the amd NFSv3 server. +auto_nfs_version = 3 # DEFINE AN AMD MOUNT POINT [ /net ] diff --git a/am-utils.spec b/am-utils.spec index 2a94084..958693c 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,13 +1,17 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils -Version: 6.1.5 -Release: 32%{?dist} +Version: 6.2.0 +%define githash bb13dea6d0bf378f38a2a009a9802577f5399673 +%define shorthash %(echo "%{githash}" | cut -c -8) +%define gitdate 20140906 +%define revision 1 +Release: %{revision}.%{gitdate}git%{shorthash}%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons URL: http://am-utils.org - -Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{version}.tar.gz +# Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git +Source: am-utils-%{version}-%{revision}.git.%{shorthash}.tar.gz Source1: amd.service Source2: am-utils.conf Source3: am-utils.sysconf @@ -38,39 +42,13 @@ Requires(preun): systemd-units Requires(postun): systemd-units Requires(preun): /sbin/install-info -# 203193 - tmpfile usage -Patch1: am-utils-6.1.5-rmtab-temp.patch -# 202180 - amd service doesn't work -Patch2: am-utils-6.1.5-nfs-version.patch -# UTS_RELEASE macro has been removed from the latest kernel -Patch3: am-utils-6.1.5-UTS_RELEASE.patch -# Build system bugfixes -Patch4: am-utils-6.1.5-buildsys.patch -# 435420 - CVE-2008-1078 am-utils: insecure usage of temporary files -Patch5: am-utils-6.1.5-expn-temp.patch -# 450754 - Amd does not work with 2.6.25 -# 602938 - am-utils fails on f13 with amfs_toplvl_mount -# 640383 - am-utils doesn't work in Fedora 13 -Patch6: am-utils-6.1.5-nolock-toplvl.patch -# 566711 - am-utils: incorrect use of tcp_wrapper -Patch7: am-utils-6.1.5-libwarp.patch -# 955445 - am-utils package should be built with PIE flags -Patch8: am-utils-6.1.5-use-_hardened_build-flag.patch -# Fix documentation build fails. -Patch9: am-utils-6.1.5-texinfo-documentation-build-fixes.patch +# automake ylwrap has changed, fix inline patch in bootstrap. +Patch1: am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch -Patch10: am-utils-6.1.5-dont-background-autofs-umount.patch -Patch11: am-utils-6.1.5-check-fh-on-umount-succeeded.patch -Patch12: am-utils-6.1.5-handle-ENOENT-umount-return-for-autofs-mounts.patch -Patch13: am-utils-6.2-1.git.e03592f0-fix-get_nfs_version-message.patch -Patch14: am-utils-6.2-1.git.e03592f0-fix-debug-log-deadlock.patch -Patch15: am-utils-6.2-0.git.9b652fb4-linux-umount-wait-on-ebusy.patch -Patch16: am-utils-6.2-make-sure-to-remove-nodes-in-the-proper-order-when-going-down.patch -Patch17: am-utils-6.2-0.git.9b652fb4-fix-handle-failed-umount-on-exit.patch -# Don't attempt to use v5 protocol -Patch18: am-utils-6.1.5-fix-autofs-proto-version-define.patch - -%global _hardened_build 1 +# Not needed since autoreconf/libtool appear to do this automatically +# Leaving it set doesn't appear to be a problem so leave it set in +# case this changes. +%global _hardened_build 1 # We need to filter out some perl requirements for now. %define _use_internal_dependency_generator 0 @@ -88,26 +66,9 @@ You should install am-utils if you need a program for automatically mounting and unmounting filesystems. %prep -%setup -q +%setup -q -n %{name}-%{version}-%{revision}.git.%{shorthash} %patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires @@ -205,11 +166,9 @@ fi %files %doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample %dir /.automount -%{_bindir}/expn %{_bindir}/pawd %{_sbindir}/* %{_mandir}/man[58]/* -%{_mandir}/man1/expn.1* %{_mandir}/man1/pawd.1* %config(noreplace) %{_sysconfdir}/amd.net %config(noreplace) %{_sysconfdir}/amd.conf @@ -219,6 +178,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 +- Update am-utils to current git to get needed NFSv3 functionality. + * Fri Aug 15 2014 Fedora Release Engineering - 5:6.1.5-32 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild diff --git a/sources b/sources index 3f481c7..ebfe662 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -bc07514f4316511ace5087b9e6dc3771 am-utils-6.1.5.tar.gz +6f631a68f7d98eca36feb5d675ff2296 am-utils-6.2.0-1.git.bb13dea6.tar.gz From 51a432f378bf2af47d045f23a7ab9d8e6244c029 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 21 Oct 2014 18:51:19 +0800 Subject: [PATCH 079/157] - add perl-Unicode-EastAsianWidth to BuildRequires. --- am-utils.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/am-utils.spec b/am-utils.spec index 958693c..b9420d7 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -28,6 +28,7 @@ BuildRequires: flex BuildRequires: tcp_wrappers-devel BuildRequires: systemd-units BuildRequires: texinfo +BuildRequires: perl-Unicode-EastAsianWidth Requires: portmap Requires: grep @@ -178,6 +179,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 +- add perl-Unicode-EastAsianWidth to BuildRequires. + * Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 - Update am-utils to current git to get needed NFSv3 functionality. From be0cdb12c3c97af98f5e3d352bd904f6f5e58fe4 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 16 Jan 2015 11:25:42 +0800 Subject: [PATCH 080/157] - fix libtool-2.4.4 build failure, bug 1181698. --- ...uto-generated-macros-in-aclinlude_m4.patch | 8696 +++++++++++++++++ am-utils.spec | 9 +- 2 files changed, 8703 insertions(+), 2 deletions(-) create mode 100644 am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch diff --git a/am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch b/am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch new file mode 100644 index 0000000..1c68146 --- /dev/null +++ b/am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch @@ -0,0 +1,8696 @@ +am-utils-6.2.0-1.git.bb13dea6 - dont include auto generated macros in aclinluder.m4 + +From: Ian Kent + +am-utils-6.2 - dont include auto generated macros in aclinlude.m4 + +libtool-2.4.4 causes the am-utils build to not produce a working install. + +To fix this (for future libtool rebases) put system macros into +$(top_srcdir)/m4 and maintainer-defined macros into $(top_srcdir)/m4/macros. + +Then, bootstrap script generates acinclude.m4 only from maintainer-defined +macros. + +Signed-off-by: Ian Kent +--- + Makefile.am | 2 + configure.ac | 2 + m4/macros/libtool.m4 | 7982 ---------------------------------------------- + m4/macros/ltoptions.m4 | 384 -- + m4/macros/ltsugar.m4 | 123 - + m4/macros/ltversion.m4 | 23 + m4/macros/lt~obsolete.m4 | 98 - + 7 files changed, 2 insertions(+), 8612 deletions(-) + delete mode 100644 m4/macros/libtool.m4 + delete mode 100644 m4/macros/ltoptions.m4 + delete mode 100644 m4/macros/ltsugar.m4 + delete mode 100644 m4/macros/ltversion.m4 + delete mode 100644 m4/macros/lt~obsolete.m4 + +diff --git a/Makefile.am b/Makefile.am +index 01700f8..f9345c1 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,7 +6,7 @@ + + @SET_MAKE@ + +-ACLOCAL_AMFLAGS = -I m4/macros ++ACLOCAL_AMFLAGS = -I m4 + + SUBDIRS = \ + libamu \ +diff --git a/configure.ac b/configure.ac +index 3d1bb00..ce61925 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -17,7 +17,7 @@ AC_INIT([am-utils], + [https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) + AC_MSG_NOTICE(*** INITIALIZATION ***) + AC_CONFIG_SRCDIR([amd/amd.c]) +-AC_CONFIG_MACRO_DIR([m4/macros]) ++AC_CONFIG_MACRO_DIR([m4]) + AM_CONFIG_HEADER(config.h) + AH_TOP([ + /* +diff --git a/m4/macros/libtool.m4 b/m4/macros/libtool.m4 +deleted file mode 100644 +index dfb036f..0000000 +--- a/m4/macros/libtool.m4 ++++ /dev/null +@@ -1,7982 +0,0 @@ +-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +-# +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +-# Foundation, Inc. +-# Written by Gordon Matzigkeit, 1996 +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-m4_define([_LT_COPYING], [dnl +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +-# Foundation, Inc. +-# Written by Gordon Matzigkeit, 1996 +-# +-# This file is part of GNU Libtool. +-# +-# GNU Libtool is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License as +-# published by the Free Software Foundation; either version 2 of +-# the License, or (at your option) any later version. +-# +-# As a special exception to the GNU General Public License, +-# if you distribute this file as part of a program or library that +-# is built using GNU Libtool, you may include this file under the +-# same distribution terms that you use for the rest of that program. +-# +-# GNU Libtool is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with GNU Libtool; see the file COPYING. If not, a copy +-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +-# obtained by writing to the Free Software Foundation, Inc., +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-]) +- +-# serial 57 LT_INIT +- +- +-# LT_PREREQ(VERSION) +-# ------------------ +-# Complain and exit if this libtool version is less that VERSION. +-m4_defun([LT_PREREQ], +-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, +- [m4_default([$3], +- [m4_fatal([Libtool version $1 or higher is required], +- 63)])], +- [$2])]) +- +- +-# _LT_CHECK_BUILDDIR +-# ------------------ +-# Complain if the absolute build directory name contains unusual characters +-m4_defun([_LT_CHECK_BUILDDIR], +-[case `pwd` in +- *\ * | *\ *) +- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +-esac +-]) +- +- +-# LT_INIT([OPTIONS]) +-# ------------------ +-AC_DEFUN([LT_INIT], +-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +-AC_BEFORE([$0], [LT_LANG])dnl +-AC_BEFORE([$0], [LT_OUTPUT])dnl +-AC_BEFORE([$0], [LTDL_INIT])dnl +-m4_require([_LT_CHECK_BUILDDIR])dnl +- +-dnl Autoconf doesn't catch unexpanded LT_ macros by default: +-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +-dnl unless we require an AC_DEFUNed macro: +-AC_REQUIRE([LTOPTIONS_VERSION])dnl +-AC_REQUIRE([LTSUGAR_VERSION])dnl +-AC_REQUIRE([LTVERSION_VERSION])dnl +-AC_REQUIRE([LTOBSOLETE_VERSION])dnl +-m4_require([_LT_PROG_LTMAIN])dnl +- +-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) +- +-dnl Parse OPTIONS +-_LT_SET_OPTIONS([$0], [$1]) +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ltmain" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl +- +-_LT_SETUP +- +-# Only expand once: +-m4_define([LT_INIT]) +-])# LT_INIT +- +-# Old names: +-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +-dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +- +- +-# _LT_CC_BASENAME(CC) +-# ------------------- +-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +-m4_defun([_LT_CC_BASENAME], +-[for cc_temp in $1""; do +- case $cc_temp in +- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; +- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +-]) +- +- +-# _LT_FILEUTILS_DEFAULTS +-# ---------------------- +-# It is okay to use these file commands and assume they have been set +-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +-m4_defun([_LT_FILEUTILS_DEFAULTS], +-[: ${CP="cp -f"} +-: ${MV="mv -f"} +-: ${RM="rm -f"} +-])# _LT_FILEUTILS_DEFAULTS +- +- +-# _LT_SETUP +-# --------- +-m4_defun([_LT_SETUP], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +- +-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +-dnl +-_LT_DECL([], [host_alias], [0], [The host system])dnl +-_LT_DECL([], [host], [0])dnl +-_LT_DECL([], [host_os], [0])dnl +-dnl +-_LT_DECL([], [build_alias], [0], [The build system])dnl +-_LT_DECL([], [build], [0])dnl +-_LT_DECL([], [build_os], [0])dnl +-dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([LT_PATH_LD])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-dnl +-AC_REQUIRE([AC_PROG_LN_S])dnl +-test -z "$LN_S" && LN_S="ln -s" +-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +-dnl +-AC_REQUIRE([LT_CMD_MAX_LEN])dnl +-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +-dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_CHECK_SHELL_FEATURES])dnl +-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +-m4_require([_LT_CMD_RELOAD])dnl +-m4_require([_LT_CHECK_MAGIC_METHOD])dnl +-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +-m4_require([_LT_CMD_OLD_ARCHIVE])dnl +-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +-m4_require([_LT_WITH_SYSROOT])dnl +- +-_LT_CONFIG_LIBTOOL_INIT([ +-# See if we are running on zsh, and set the options which allow our +-# commands through without removal of \ escapes INIT. +-if test -n "\${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +-fi +-]) +-if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +-fi +- +-_LT_CHECK_OBJDIR +- +-m4_require([_LT_TAG_COMPILER])dnl +- +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac +- +-# Global variables: +-ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except MSVC, +-# which needs '.lib'). +-libext=a +- +-with_gnu_ld="$lt_cv_prog_gnu_ld" +- +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" +- +-# Set sane defaults for various variables +-test -z "$CC" && CC=cc +-test -z "$LTCC" && LTCC=$CC +-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +-test -z "$LD" && LD=ld +-test -z "$ac_objext" && ac_objext=o +- +-_LT_CC_BASENAME([$compiler]) +- +-# Only perform the check for file, if the check method requires it +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- _LT_PATH_MAGIC +- fi +- ;; +-esac +- +-# Use C for the default configuration in the libtool script +-LT_SUPPORTED_TAG([CC]) +-_LT_LANG_C_CONFIG +-_LT_LANG_DEFAULT_CONFIG +-_LT_CONFIG_COMMANDS +-])# _LT_SETUP +- +- +-# _LT_PREPARE_SED_QUOTE_VARS +-# -------------------------- +-# Define a few sed substitution that help us do robust quoting. +-m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +-[# Backslashify metacharacters that are still active within +-# double-quoted strings. +-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' +- +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([["`\\]]\)/\\\1/g' +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to delay expansion of an escaped single quote. +-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +-]) +- +-# _LT_PROG_LTMAIN +-# --------------- +-# Note that this code is called both from `configure', and `config.status' +-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +-# `config.status' has no value for ac_aux_dir unless we are using Automake, +-# so we pass a copy along to make sure it has a sensible value anyway. +-m4_defun([_LT_PROG_LTMAIN], +-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +-ltmain="$ac_aux_dir/ltmain.sh" +-])# _LT_PROG_LTMAIN +- +- +-## ------------------------------------- ## +-## Accumulate code for creating libtool. ## +-## ------------------------------------- ## +- +-# So that we can recreate a full libtool script including additional +-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +-# in macros and then make a single call at the end using the `libtool' +-# label. +- +- +-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +-# ---------------------------------------- +-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +-m4_define([_LT_CONFIG_LIBTOOL_INIT], +-[m4_ifval([$1], +- [m4_append([_LT_OUTPUT_LIBTOOL_INIT], +- [$1 +-])])]) +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_INIT]) +- +- +-# _LT_CONFIG_LIBTOOL([COMMANDS]) +-# ------------------------------ +-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +-m4_define([_LT_CONFIG_LIBTOOL], +-[m4_ifval([$1], +- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], +- [$1 +-])])]) +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) +- +- +-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +-# ----------------------------------------------------- +-m4_defun([_LT_CONFIG_SAVE_COMMANDS], +-[_LT_CONFIG_LIBTOOL([$1]) +-_LT_CONFIG_LIBTOOL_INIT([$2]) +-]) +- +- +-# _LT_FORMAT_COMMENT([COMMENT]) +-# ----------------------------- +-# Add leading comment marks to the start of each line, and a trailing +-# full-stop to the whole comment if one is not present already. +-m4_define([_LT_FORMAT_COMMENT], +-[m4_ifval([$1], [ +-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], +- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +-)]) +- +- +- +-## ------------------------ ## +-## FIXME: Eliminate VARNAME ## +-## ------------------------ ## +- +- +-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +-# ------------------------------------------------------------------- +-# CONFIGNAME is the name given to the value in the libtool script. +-# VARNAME is the (base) name used in the configure script. +-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +-# VARNAME. Any other value will be used directly. +-m4_define([_LT_DECL], +-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], +- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], +- [m4_ifval([$1], [$1], [$2])]) +- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) +- m4_ifval([$4], +- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) +- lt_dict_add_subkey([lt_decl_dict], [$2], +- [tagged?], [m4_ifval([$5], [yes], [no])])]) +-]) +- +- +-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +-# -------------------------------------------------------- +-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) +- +- +-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +-# ------------------------------------------------ +-m4_define([lt_decl_tag_varnames], +-[_lt_decl_filter([tagged?], [yes], $@)]) +- +- +-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +-# --------------------------------------------------------- +-m4_define([_lt_decl_filter], +-[m4_case([$#], +- [0], [m4_fatal([$0: too few arguments: $#])], +- [1], [m4_fatal([$0: too few arguments: $#: $1])], +- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], +- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], +- [lt_dict_filter([lt_decl_dict], $@)])[]dnl +-]) +- +- +-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +-# -------------------------------------------------- +-m4_define([lt_decl_quote_varnames], +-[_lt_decl_filter([value], [1], $@)]) +- +- +-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +-# --------------------------------------------------- +-m4_define([lt_decl_dquote_varnames], +-[_lt_decl_filter([value], [2], $@)]) +- +- +-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +-# --------------------------------------------------- +-m4_define([lt_decl_varnames_tagged], +-[m4_assert([$# <= 2])dnl +-_$0(m4_quote(m4_default([$1], [[, ]])), +- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), +- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +-m4_define([_lt_decl_varnames_tagged], +-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) +- +- +-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +-# ------------------------------------------------ +-m4_define([lt_decl_all_varnames], +-[_$0(m4_quote(m4_default([$1], [[, ]])), +- m4_if([$2], [], +- m4_quote(lt_decl_varnames), +- m4_quote(m4_shift($@))))[]dnl +-]) +-m4_define([_lt_decl_all_varnames], +-[lt_join($@, lt_decl_varnames_tagged([$1], +- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +-]) +- +- +-# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +-# ------------------------------------ +-# Quote a variable value, and forward it to `config.status' so that its +-# declaration there will have the same value as in `configure'. VARNAME +-# must have a single quote delimited value for this to work. +-m4_define([_LT_CONFIG_STATUS_DECLARE], +-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) +- +- +-# _LT_CONFIG_STATUS_DECLARATIONS +-# ------------------------------ +-# We delimit libtool config variables with single quotes, so when +-# we write them to config.status, we have to be sure to quote all +-# embedded single quotes properly. In configure, this macro expands +-# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +-# +-# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), +- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) +- +- +-# _LT_LIBTOOL_TAGS +-# ---------------- +-# Output comment and list of tags supported by the script +-m4_defun([_LT_LIBTOOL_TAGS], +-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +-available_tags="_LT_TAGS"dnl +-]) +- +- +-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +-# ----------------------------------- +-# Extract the dictionary values for VARNAME (optionally with TAG) and +-# expand to a commented shell variable setting: +-# +-# # Some comment about what VAR is for. +-# visible_name=$lt_internal_name +-m4_define([_LT_LIBTOOL_DECLARE], +-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], +- [description])))[]dnl +-m4_pushdef([_libtool_name], +- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), +- [0], [_libtool_name=[$]$1], +- [1], [_libtool_name=$lt_[]$1], +- [2], [_libtool_name=$lt_[]$1], +- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +-]) +- +- +-# _LT_LIBTOOL_CONFIG_VARS +-# ----------------------- +-# Produce commented declarations of non-tagged libtool config variables +-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +-# section) are produced by _LT_LIBTOOL_TAG_VARS. +-m4_defun([_LT_LIBTOOL_CONFIG_VARS], +-[m4_foreach([_lt_var], +- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), +- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) +- +- +-# _LT_LIBTOOL_TAG_VARS(TAG) +-# ------------------------- +-m4_define([_LT_LIBTOOL_TAG_VARS], +-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), +- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) +- +- +-# _LT_TAGVAR(VARNAME, [TAGNAME]) +-# ------------------------------ +-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) +- +- +-# _LT_CONFIG_COMMANDS +-# ------------------- +-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +-# variables for single and double quote escaping we saved from calls +-# to _LT_DECL, we can put quote escaped variables declarations +-# into `config.status', and then the shell code to quote escape them in +-# for loops in `config.status'. Finally, any additional code accumulated +-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +-m4_defun([_LT_CONFIG_COMMANDS], +-[AC_PROVIDE_IFELSE([LT_OUTPUT], +- dnl If the libtool generation code has been placed in $CONFIG_LT, +- dnl instead of duplicating it all over again into config.status, +- dnl then we will have config.status run $CONFIG_LT later, so it +- dnl needs to know what name is stored there: +- [AC_CONFIG_COMMANDS([libtool], +- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], +- dnl If the libtool generation code is destined for config.status, +- dnl expand the accumulated commands and init code now: +- [AC_CONFIG_COMMANDS([libtool], +- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +-])#_LT_CONFIG_COMMANDS +- +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +-[ +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-sed_quote_subst='$sed_quote_subst' +-double_quote_subst='$double_quote_subst' +-delay_variable_subst='$delay_variable_subst' +-_LT_CONFIG_STATUS_DECLARATIONS +-LTCC='$LTCC' +-LTCFLAGS='$LTCFLAGS' +-compiler='$compiler_DEFAULT' +- +-# A function that is used when there is no print builtin or printf. +-func_fallback_echo () +-{ +- eval 'cat <<_LTECHO_EOF +-\$[]1 +-_LTECHO_EOF' +-} +- +-# Quote evaled strings. +-for var in lt_decl_all_varnames([[ \ +-]], lt_decl_quote_varnames); do +- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +- *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" +- ;; +- *) +- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +- ;; +- esac +-done +- +-# Double-quote double-evaled strings. +-for var in lt_decl_all_varnames([[ \ +-]], lt_decl_dquote_varnames); do +- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +- *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" +- ;; +- *) +- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +- ;; +- esac +-done +- +-_LT_OUTPUT_LIBTOOL_INIT +-]) +- +-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +-# ------------------------------------ +-# Generate a child script FILE with all initialization necessary to +-# reuse the environment learned by the parent script, and make the +-# file executable. If COMMENT is supplied, it is inserted after the +-# `#!' sequence but before initialization text begins. After this +-# macro, additional text can be appended to FILE to form the body of +-# the child script. The macro ends with non-zero status if the +-# file could not be fully written (such as if the disk is full). +-m4_ifdef([AS_INIT_GENERATED], +-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +-[m4_defun([_LT_GENERATED_FILE_INIT], +-[m4_require([AS_PREPARE])]dnl +-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +-[lt_write_fail=0 +-cat >$1 <<_ASEOF || lt_write_fail=1 +-#! $SHELL +-# Generated by $as_me. +-$2 +-SHELL=\${CONFIG_SHELL-$SHELL} +-export SHELL +-_ASEOF +-cat >>$1 <<\_ASEOF || lt_write_fail=1 +-AS_SHELL_SANITIZE +-_AS_PREPARE +-exec AS_MESSAGE_FD>&1 +-_ASEOF +-test $lt_write_fail = 0 && chmod +x $1[]dnl +-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT +- +-# LT_OUTPUT +-# --------- +-# This macro allows early generation of the libtool script (before +-# AC_OUTPUT is called), incase it is used in configure for compilation +-# tests. +-AC_DEFUN([LT_OUTPUT], +-[: ${CONFIG_LT=./config.lt} +-AC_MSG_NOTICE([creating $CONFIG_LT]) +-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +-[# Run this file to recreate a libtool stub with the current configuration.]) +- +-cat >>"$CONFIG_LT" <<\_LTEOF +-lt_cl_silent=false +-exec AS_MESSAGE_LOG_FD>>config.log +-{ +- echo +- AS_BOX([Running $as_me.]) +-} >&AS_MESSAGE_LOG_FD +- +-lt_cl_help="\ +-\`$as_me' creates a local libtool stub from the current configuration, +-for use in further configure time tests before the real libtool is +-generated. +- +-Usage: $[0] [[OPTIONS]] +- +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -q, --quiet do not print progress messages +- -d, --debug don't remove temporary files +- +-Report bugs to ." +- +-lt_cl_version="\ +-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +-configured by $[0], generated by m4_PACKAGE_STRING. +- +-Copyright (C) 2011 Free Software Foundation, Inc. +-This config.lt script is free software; the Free Software Foundation +-gives unlimited permision to copy, distribute and modify it." +- +-while test $[#] != 0 +-do +- case $[1] in +- --version | --v* | -V ) +- echo "$lt_cl_version"; exit 0 ;; +- --help | --h* | -h ) +- echo "$lt_cl_help"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --quiet | --q* | --silent | --s* | -q ) +- lt_cl_silent=: ;; +- +- -*) AC_MSG_ERROR([unrecognized option: $[1] +-Try \`$[0] --help' for more information.]) ;; +- +- *) AC_MSG_ERROR([unrecognized argument: $[1] +-Try \`$[0] --help' for more information.]) ;; +- esac +- shift +-done +- +-if $lt_cl_silent; then +- exec AS_MESSAGE_FD>/dev/null +-fi +-_LTEOF +- +-cat >>"$CONFIG_LT" <<_LTEOF +-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +-_LTEOF +- +-cat >>"$CONFIG_LT" <<\_LTEOF +-AC_MSG_NOTICE([creating $ofile]) +-_LT_OUTPUT_LIBTOOL_COMMANDS +-AS_EXIT(0) +-_LTEOF +-chmod +x "$CONFIG_LT" +- +-# configure is writing to config.log, but config.lt does its own redirection, +-# appending to config.log, which fails on DOS, as config.log is still kept +-# open by configure. Here we exec the FD to /dev/null, effectively closing +-# config.log, so it can be properly (re)opened and appended to by config.lt. +-lt_cl_success=: +-test "$silent" = yes && +- lt_config_lt_args="$lt_config_lt_args --quiet" +-exec AS_MESSAGE_LOG_FD>/dev/null +-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +-exec AS_MESSAGE_LOG_FD>>config.log +-$lt_cl_success || AS_EXIT(1) +-])# LT_OUTPUT +- +- +-# _LT_CONFIG(TAG) +-# --------------- +-# If TAG is the built-in tag, create an initial libtool script with a +-# default configuration from the untagged config vars. Otherwise add code +-# to config.status for appending the configuration named by TAG from the +-# matching tagged config vars. +-m4_defun([_LT_CONFIG], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-_LT_CONFIG_SAVE_COMMANDS([ +- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl +- m4_if(_LT_TAG, [C], [ +- # See if we are running on zsh, and set the options which allow our +- # commands through without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- +- cfgfile="${ofile}T" +- trap "$RM \"$cfgfile\"; exit 1" 1 2 15 +- $RM "$cfgfile" +- +- cat <<_LT_EOF >> "$cfgfile" +-#! $SHELL +- +-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-_LT_COPYING +-_LT_LIBTOOL_TAGS +- +-# ### BEGIN LIBTOOL CONFIG +-_LT_LIBTOOL_CONFIG_VARS +-_LT_LIBTOOL_TAG_VARS +-# ### END LIBTOOL CONFIG +- +-_LT_EOF +- +- case $host_os in +- aix3*) +- cat <<\_LT_EOF >> "$cfgfile" +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-_LT_EOF +- ;; +- esac +- +- _LT_PROG_LTMAIN +- +- # We use sed instead of cat because bash on DJGPP gets confused if +- # if finds mixed CR/LF and LF-only lines. Since sed operates in +- # text mode, it properly converts lines to CR/LF. This bash problem +- # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" \ +- || (rm -f "$cfgfile"; exit 1) +- +- _LT_PROG_REPLACE_SHELLFNS +- +- mv -f "$cfgfile" "$ofile" || +- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +- chmod +x "$ofile" +-], +-[cat <<_LT_EOF >> "$ofile" +- +-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +-dnl in a comment (ie after a #). +-# ### BEGIN LIBTOOL TAG CONFIG: $1 +-_LT_LIBTOOL_TAG_VARS(_LT_TAG) +-# ### END LIBTOOL TAG CONFIG: $1 +-_LT_EOF +-])dnl /m4_if +-], +-[m4_if([$1], [], [ +- PACKAGE='$PACKAGE' +- VERSION='$VERSION' +- TIMESTAMP='$TIMESTAMP' +- RM='$RM' +- ofile='$ofile'], []) +-])dnl /_LT_CONFIG_SAVE_COMMANDS +-])# _LT_CONFIG +- +- +-# LT_SUPPORTED_TAG(TAG) +-# --------------------- +-# Trace this macro to discover what tags are supported by the libtool +-# --tag option, using: +-# autoconf --trace 'LT_SUPPORTED_TAG:$1' +-AC_DEFUN([LT_SUPPORTED_TAG], []) +- +- +-# C support is built-in for now +-m4_define([_LT_LANG_C_enabled], []) +-m4_define([_LT_TAGS], []) +- +- +-# LT_LANG(LANG) +-# ------------- +-# Enable libtool support for the given language if not already enabled. +-AC_DEFUN([LT_LANG], +-[AC_BEFORE([$0], [LT_OUTPUT])dnl +-m4_case([$1], +- [C], [_LT_LANG(C)], +- [C++], [_LT_LANG(CXX)], +- [Go], [_LT_LANG(GO)], +- [Java], [_LT_LANG(GCJ)], +- [Fortran 77], [_LT_LANG(F77)], +- [Fortran], [_LT_LANG(FC)], +- [Windows Resource], [_LT_LANG(RC)], +- [m4_ifdef([_LT_LANG_]$1[_CONFIG], +- [_LT_LANG($1)], +- [m4_fatal([$0: unsupported language: "$1"])])])dnl +-])# LT_LANG +- +- +-# _LT_LANG(LANGNAME) +-# ------------------ +-m4_defun([_LT_LANG], +-[m4_ifdef([_LT_LANG_]$1[_enabled], [], +- [LT_SUPPORTED_TAG([$1])dnl +- m4_append([_LT_TAGS], [$1 ])dnl +- m4_define([_LT_LANG_]$1[_enabled], [])dnl +- _LT_LANG_$1_CONFIG($1)])dnl +-])# _LT_LANG +- +- +-m4_ifndef([AC_PROG_GO], [ +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_GO. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +-m4_defun([AC_PROG_GO], +-[AC_LANG_PUSH(Go)dnl +-AC_ARG_VAR([GOC], [Go compiler command])dnl +-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +-_AC_ARG_VAR_LDFLAGS()dnl +-AC_CHECK_TOOL(GOC, gccgo) +-if test -z "$GOC"; then +- if test -n "$ac_tool_prefix"; then +- AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) +- fi +-fi +-if test -z "$GOC"; then +- AC_CHECK_PROG(GOC, gccgo, gccgo, false) +-fi +-])#m4_defun +-])#m4_ifndef +- +- +-# _LT_LANG_DEFAULT_CONFIG +-# ----------------------- +-m4_defun([_LT_LANG_DEFAULT_CONFIG], +-[AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [LT_LANG(CXX)], +- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_F77], +- [LT_LANG(F77)], +- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_FC], +- [LT_LANG(FC)], +- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) +- +-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +-dnl pulling things in needlessly. +-AC_PROVIDE_IFELSE([AC_PROG_GCJ], +- [LT_LANG(GCJ)], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], +- [LT_LANG(GCJ)], +- [AC_PROVIDE_IFELSE([LT_PROG_GCJ], +- [LT_LANG(GCJ)], +- [m4_ifdef([AC_PROG_GCJ], +- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) +- m4_ifdef([A][M_PROG_GCJ], +- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) +- m4_ifdef([LT_PROG_GCJ], +- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_GO], +- [LT_LANG(GO)], +- [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) +- +-AC_PROVIDE_IFELSE([LT_PROG_RC], +- [LT_LANG(RC)], +- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +-])# _LT_LANG_DEFAULT_CONFIG +- +-# Obsolete macros: +-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +-dnl AC_DEFUN([AC_LIBTOOL_F77], []) +-dnl AC_DEFUN([AC_LIBTOOL_FC], []) +-dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +-dnl AC_DEFUN([AC_LIBTOOL_RC], []) +- +- +-# _LT_TAG_COMPILER +-# ---------------- +-m4_defun([_LT_TAG_COMPILER], +-[AC_REQUIRE([AC_PROG_CC])dnl +- +-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +-])# _LT_TAG_COMPILER +- +- +-# _LT_COMPILER_BOILERPLATE +-# ------------------------ +-# Check for compiler boilerplate output or warnings with +-# the simple compiler test code. +-m4_defun([_LT_COMPILER_BOILERPLATE], +-[m4_require([_LT_DECL_SED])dnl +-ac_outfile=conftest.$ac_objext +-echo "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$RM -r conftest* +-])# _LT_COMPILER_BOILERPLATE +- +- +-# _LT_LINKER_BOILERPLATE +-# ---------------------- +-# Check for linker boilerplate output or warnings with +-# the simple link test code. +-m4_defun([_LT_LINKER_BOILERPLATE], +-[m4_require([_LT_DECL_SED])dnl +-ac_outfile=conftest.$ac_objext +-echo "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$RM -r conftest* +-])# _LT_LINKER_BOILERPLATE +- +-# _LT_REQUIRED_DARWIN_CHECKS +-# ------------------------- +-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ +- case $host_os in +- rhapsody* | darwin*) +- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) +- AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) +- AC_CHECK_TOOL([LIPO], [lipo], [:]) +- AC_CHECK_TOOL([OTOOL], [otool], [:]) +- AC_CHECK_TOOL([OTOOL64], [otool64], [:]) +- _LT_DECL([], [DSYMUTIL], [1], +- [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) +- _LT_DECL([], [NMEDIT], [1], +- [Tool to change global to local symbols on Mac OS X]) +- _LT_DECL([], [LIPO], [1], +- [Tool to manipulate fat objects and archives on Mac OS X]) +- _LT_DECL([], [OTOOL], [1], +- [ldd/readelf like tool for Mach-O binaries on Mac OS X]) +- _LT_DECL([], [OTOOL64], [1], +- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) +- +- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], +- [lt_cv_apple_cc_single_mod=no +- if test -z "${LT_MULTI_MODULE}"; then +- # By default we will add the -single_module flag. You can override +- # by either setting the environment variable LT_MULTI_MODULE +- # non-empty at configure time, or by adding -multi_module to the +- # link flags. +- rm -rf libconftest.dylib* +- echo "int foo(void){return 1;}" > conftest.c +- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err +- _lt_result=$? +- # If there is a non-empty error log, and "single_module" +- # appears in it, assume the flag caused a linker warning +- if test -s conftest.err && $GREP single_module conftest.err; then +- cat conftest.err >&AS_MESSAGE_LOG_FD +- # Otherwise, if the output was created with a 0 exit code from +- # the compiler, it worked. +- elif test -f libconftest.dylib && test $_lt_result -eq 0; then +- lt_cv_apple_cc_single_mod=yes +- else +- cat conftest.err >&AS_MESSAGE_LOG_FD +- fi +- rm -rf libconftest.dylib* +- rm -f conftest.* +- fi]) +- +- AC_CACHE_CHECK([for -exported_symbols_list linker flag], +- [lt_cv_ld_exported_symbols_list], +- [lt_cv_ld_exported_symbols_list=no +- save_LDFLAGS=$LDFLAGS +- echo "_main" > conftest.sym +- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [lt_cv_ld_exported_symbols_list=yes], +- [lt_cv_ld_exported_symbols_list=no]) +- LDFLAGS="$save_LDFLAGS" +- ]) +- +- AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], +- [lt_cv_ld_force_load=no +- cat > conftest.c << _LT_EOF +-int forced_loaded() { return 2;} +-_LT_EOF +- echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD +- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD +- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD +- echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD +- $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD +- cat > conftest.c << _LT_EOF +-int main() { return 0;} +-_LT_EOF +- echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err +- _lt_result=$? +- if test -s conftest.err && $GREP force_load conftest.err; then +- cat conftest.err >&AS_MESSAGE_LOG_FD +- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then +- lt_cv_ld_force_load=yes +- else +- cat conftest.err >&AS_MESSAGE_LOG_FD +- fi +- rm -f conftest.err libconftest.a conftest conftest.c +- rm -rf conftest.dSYM +- ]) +- case $host_os in +- rhapsody* | darwin1.[[012]]) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; +- darwin1.*) +- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +- darwin*) # darwin 5.x on +- # if running on 10.5 or later, the deployment target defaults +- # to the OS version, if on x86, and 10.4, the deployment +- # target defaults to 10.4. Don't you love it? +- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in +- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; +- 10.[[012]]*) +- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +- 10.*) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; +- esac +- ;; +- esac +- if test "$lt_cv_apple_cc_single_mod" = "yes"; then +- _lt_dar_single_mod='$single_module' +- fi +- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then +- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' +- else +- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' +- fi +- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then +- _lt_dsymutil='~$DSYMUTIL $lib || :' +- else +- _lt_dsymutil= +- fi +- ;; +- esac +-]) +- +- +-# _LT_DARWIN_LINKER_FEATURES([TAG]) +-# --------------------------------- +-# Checks for linker and compiler features on darwin +-m4_defun([_LT_DARWIN_LINKER_FEATURES], +-[ +- m4_require([_LT_REQUIRED_DARWIN_CHECKS]) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_automatic, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- if test "$lt_cv_ld_force_load" = "yes"; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' +- m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], +- [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)='' +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" +- case $cc_basename in +- ifort*) _lt_dar_can_shared=yes ;; +- *) _lt_dar_can_shared=$GCC ;; +- esac +- if test "$_lt_dar_can_shared" = "yes"; then +- output_verbose_link_cmd=func_echo_all +- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" +- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" +- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" +- m4_if([$1], [CXX], +-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then +- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" +- fi +-],[]) +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +-]) +- +-# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +-# ---------------------------------- +-# Links a minimal program and checks the executable +-# for the system default hardcoded library path. In most cases, +-# this is /usr/lib:/lib, but when the MPI compilers are used +-# the location of the communication and MPI libs are included too. +-# If we don't find anything, use the default library path according +-# to the aix ld manual. +-# Store the results from the different compilers for each TAGNAME. +-# Allow to override them for all tags through lt_cv_aix_libpath. +-m4_defun([_LT_SYS_MODULE_PATH_AIX], +-[m4_require([_LT_DECL_SED])dnl +-if test "${lt_cv_aix_libpath+set}" = set; then +- aix_libpath=$lt_cv_aix_libpath +-else +- AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], +- [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ +- lt_aix_libpath_sed='[ +- /Import File Strings/,/^$/ { +- /^0/ { +- s/^0 *\([^ ]*\) *$/\1/ +- p +- } +- }]' +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +- # Check for a 64-bit object if we didn't find anything. +- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +- fi],[]) +- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" +- fi +- ]) +- aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +-fi +-])# _LT_SYS_MODULE_PATH_AIX +- +- +-# _LT_SHELL_INIT(ARG) +-# ------------------- +-m4_define([_LT_SHELL_INIT], +-[m4_divert_text([M4SH-INIT], [$1 +-])])# _LT_SHELL_INIT +- +- +- +-# _LT_PROG_ECHO_BACKSLASH +-# ----------------------- +-# Find how we can fake an echo command that does not interpret backslash. +-# In particular, with Autoconf 2.60 or later we add some code to the start +-# of the generated configure script which will find a shell with a builtin +-# printf (which we can use as an echo command). +-m4_defun([_LT_PROG_ECHO_BACKSLASH], +-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +- +-AC_MSG_CHECKING([how to print strings]) +-# Test print first, because it will be a builtin if present. +-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ +- test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then +- ECHO='print -r --' +-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then +- ECHO='printf %s\n' +-else +- # Use this function as a fallback that always works. +- func_fallback_echo () +- { +- eval 'cat <<_LTECHO_EOF +-$[]1 +-_LTECHO_EOF' +- } +- ECHO='func_fallback_echo' +-fi +- +-# func_echo_all arg... +-# Invoke $ECHO with all args, space-separated. +-func_echo_all () +-{ +- $ECHO "$*" +-} +- +-case "$ECHO" in +- printf*) AC_MSG_RESULT([printf]) ;; +- print*) AC_MSG_RESULT([print -r]) ;; +- *) AC_MSG_RESULT([cat]) ;; +-esac +- +-m4_ifdef([_AS_DETECT_SUGGESTED], +-[_AS_DETECT_SUGGESTED([ +- test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( +- ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +- PATH=/empty FPATH=/empty; export PATH FPATH +- test "X`printf %s $ECHO`" = "X$ECHO" \ +- || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) +- +-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +-])# _LT_PROG_ECHO_BACKSLASH +- +- +-# _LT_WITH_SYSROOT +-# ---------------- +-AC_DEFUN([_LT_WITH_SYSROOT], +-[AC_MSG_CHECKING([for sysroot]) +-AC_ARG_WITH([sysroot], +-[ --with-sysroot[=DIR] Search for dependent libraries within DIR +- (or the compiler's sysroot if not specified).], +-[], [with_sysroot=no]) +- +-dnl lt_sysroot will always be passed unquoted. We quote it here +-dnl in case the user passed a directory name. +-lt_sysroot= +-case ${with_sysroot} in #( +- yes) +- if test "$GCC" = yes; then +- lt_sysroot=`$CC --print-sysroot 2>/dev/null` +- fi +- ;; #( +- /*) +- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` +- ;; #( +- no|'') +- ;; #( +- *) +- AC_MSG_RESULT([${with_sysroot}]) +- AC_MSG_ERROR([The sysroot must be an absolute path.]) +- ;; +-esac +- +- AC_MSG_RESULT([${lt_sysroot:-no}]) +-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +-[dependent libraries, and in which our libraries should be installed.])]) +- +-# _LT_ENABLE_LOCK +-# --------------- +-m4_defun([_LT_ENABLE_LOCK], +-[AC_ARG_ENABLE([libtool-lock], +- [AS_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- if test "$lt_cv_prog_gnu_ld" = yes; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -melf32bsmip" +- ;; +- *N32*) +- LD="${LD-ld} -melf32bmipn32" +- ;; +- *64-bit*) +- LD="${LD-ld} -melf64bmip" +- ;; +- esac +- else +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- fi +- rm -rf conftest* +- ;; +- +-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +-s390*-*linux*|s390*-*tpf*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *32-bit*) +- case $host in +- x86_64-*kfreebsd*-gnu) +- LD="${LD-ld} -m elf_i386_fbsd" +- ;; +- x86_64-*linux*) +- LD="${LD-ld} -m elf_i386" +- ;; +- ppc64-*linux*|powerpc64-*linux*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*kfreebsd*-gnu) +- LD="${LD-ld} -m elf_x86_64_fbsd" +- ;; +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- ppc*-*linux*|powerpc*-*linux*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*|s390*-*tpf*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_PUSH(C) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_POP]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +-*-*solaris*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *64-bit*) +- case $lt_cv_prog_gnu_ld in +- yes*) +- case $host in +- i?86-*-solaris*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- sparc*-*-solaris*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- # GNU ld 2.21 introduced _sol2 emulations. Use them if available. +- if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then +- LD="${LD-ld}_sol2" +- fi +- ;; +- *) +- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then +- LD="${LD-ld} -64" +- fi +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-esac +- +-need_locks="$enable_libtool_lock" +-])# _LT_ENABLE_LOCK +- +- +-# _LT_PROG_AR +-# ----------- +-m4_defun([_LT_PROG_AR], +-[AC_CHECK_TOOLS(AR, [ar], false) +-: ${AR=ar} +-: ${AR_FLAGS=cru} +-_LT_DECL([], [AR], [1], [The archiver]) +-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) +- +-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], +- [lt_cv_ar_at_file=no +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM], +- [echo conftest.$ac_objext > conftest.lst +- lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' +- AC_TRY_EVAL([lt_ar_try]) +- if test "$ac_status" -eq 0; then +- # Ensure the archiver fails upon bogus file names. +- rm -f conftest.$ac_objext libconftest.a +- AC_TRY_EVAL([lt_ar_try]) +- if test "$ac_status" -ne 0; then +- lt_cv_ar_at_file=@ +- fi +- fi +- rm -f conftest.* libconftest.a +- ]) +- ]) +- +-if test "x$lt_cv_ar_at_file" = xno; then +- archiver_list_spec= +-else +- archiver_list_spec=$lt_cv_ar_at_file +-fi +-_LT_DECL([], [archiver_list_spec], [1], +- [How to feed a file listing to the archiver]) +-])# _LT_PROG_AR +- +- +-# _LT_CMD_OLD_ARCHIVE +-# ------------------- +-m4_defun([_LT_CMD_OLD_ARCHIVE], +-[_LT_PROG_AR +- +-AC_CHECK_TOOL(STRIP, strip, :) +-test -z "$STRIP" && STRIP=: +-_LT_DECL([], [STRIP], [1], [A symbol stripping program]) +- +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-test -z "$RANLIB" && RANLIB=: +-_LT_DECL([], [RANLIB], [1], +- [Commands used to install an old-style archive]) +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= +- +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" +- ;; +- *) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +-fi +- +-case $host_os in +- darwin*) +- lock_old_archive_extraction=yes ;; +- *) +- lock_old_archive_extraction=no ;; +-esac +-_LT_DECL([], [old_postinstall_cmds], [2]) +-_LT_DECL([], [old_postuninstall_cmds], [2]) +-_LT_TAGDECL([], [old_archive_cmds], [2], +- [Commands used to build an old-style archive]) +-_LT_DECL([], [lock_old_archive_extraction], [0], +- [Whether to use a lock for old archive extraction]) +-])# _LT_CMD_OLD_ARCHIVE +- +- +-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------------------- +-# Check whether the given compiler option works +-AC_DEFUN([_LT_COMPILER_OPTION], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_SED])dnl +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$3" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- fi +- $RM -r conftest* +-]) +- +-if test x"[$]$2" = xyes; then +- m4_if([$5], , :, [$5]) +-else +- m4_if([$6], , :, [$6]) +-fi +-])# _LT_COMPILER_OPTION +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) +- +- +-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------- +-# Check whether the given linker option works +-AC_DEFUN([_LT_LINKER_OPTION], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_SED])dnl +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $3" +- echo "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&AS_MESSAGE_LOG_FD +- $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- else +- $2=yes +- fi +- fi +- $RM -r conftest* +- LDFLAGS="$save_LDFLAGS" +-]) +- +-if test x"[$]$2" = xyes; then +- m4_if([$4], , :, [$4]) +-else +- m4_if([$5], , :, [$5]) +-fi +-])# _LT_LINKER_OPTION +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) +- +- +-# LT_CMD_MAX_LEN +-#--------------- +-AC_DEFUN([LT_CMD_MAX_LEN], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-# find the maximum length of command line arguments +-AC_MSG_CHECKING([the maximum length of command line arguments]) +-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl +- i=0 +- teststring="ABCD" +- +- case $build_os in +- msdosdjgpp*) +- # On DJGPP, this test can blow up pretty badly due to problems in libc +- # (any single argument exceeding 2000 bytes causes a buffer overrun +- # during glob expansion). Even if it were fixed, the result of this +- # check would be larger than it should be. +- lt_cv_sys_max_cmd_len=12288; # 12K is about right +- ;; +- +- gnu*) +- # Under GNU Hurd, this test is not required because there is +- # no limit to the length of command line arguments. +- # Libtool will interpret -1 as no limit whatsoever +- lt_cv_sys_max_cmd_len=-1; +- ;; +- +- cygwin* | mingw* | cegcc*) +- # On Win9x/ME, this test blows up -- it succeeds, but takes +- # about 5 minutes as the teststring grows exponentially. +- # Worse, since 9x/ME are not pre-emptively multitasking, +- # you end up with a "frozen" computer, even though with patience +- # the test eventually succeeds (with a max line length of 256k). +- # Instead, let's just punt: use the minimum linelength reported by +- # all of the supported platforms: 8192 (on NT/2K/XP). +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- mint*) +- # On MiNT this can take a long time and run out of memory. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- amigaos*) +- # On AmigaOS with pdksh, this test takes hours, literally. +- # So we just punt and use a minimum line length of 8192. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +- # This has been around since 386BSD, at least. Likely further. +- if test -x /sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +- elif test -x /usr/sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +- else +- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs +- fi +- # And add a safety zone +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- ;; +- +- interix*) +- # We know the value 262144 and hardcode it with a safety zone (like BSD) +- lt_cv_sys_max_cmd_len=196608 +- ;; +- +- os2*) +- # The test takes a long time on OS/2. +- lt_cv_sys_max_cmd_len=8192 +- ;; +- +- osf*) +- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +- # nice to cause kernel panics so lets avoid the loop below. +- # First set a reasonable default. +- lt_cv_sys_max_cmd_len=16384 +- # +- if test -x /sbin/sysconfig; then +- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +- *1*) lt_cv_sys_max_cmd_len=-1 ;; +- esac +- fi +- ;; +- sco3.2v5*) +- lt_cv_sys_max_cmd_len=102400 +- ;; +- sysv5* | sco5v6* | sysv4.2uw2*) +- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` +- if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` +- else +- lt_cv_sys_max_cmd_len=32768 +- fi +- ;; +- *) +- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` +- if test -n "$lt_cv_sys_max_cmd_len"; then +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- else +- # Make teststring a little bigger before we do anything with it. +- # a 1K string should be a reasonable start. +- for i in 1 2 3 4 5 6 7 8 ; do +- teststring=$teststring$teststring +- done +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ +- = "X$teststring$teststring"; } >/dev/null 2>&1 && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- # Only check the string length outside the loop. +- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` +- teststring= +- # Add a significant safety factor because C++ compilers can tack on +- # massive amounts of additional arguments before passing them to the +- # linker. It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +- fi +- ;; +- esac +-]) +-if test -n $lt_cv_sys_max_cmd_len ; then +- AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +-else +- AC_MSG_RESULT(none) +-fi +-max_cmd_len=$lt_cv_sys_max_cmd_len +-_LT_DECL([], [max_cmd_len], [0], +- [What is the maximum length of a command?]) +-])# LT_CMD_MAX_LEN +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) +- +- +-# _LT_HEADER_DLFCN +-# ---------------- +-m4_defun([_LT_HEADER_DLFCN], +-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +-])# _LT_HEADER_DLFCN +- +- +-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# ---------------------------------------------------------------- +-m4_defun([_LT_TRY_DLOPEN_SELF], +-[m4_require([_LT_HEADER_DLFCN])dnl +-if test "$cross_compiling" = yes; then : +- [$4] +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext <<_LT_EOF +-[#line $LINENO "configure" +-#include "confdefs.h" +- +-#if HAVE_DLFCN_H +-#include +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-/* When -fvisbility=hidden is used, assume the code has been annotated +- correspondingly for the symbols needed. */ +-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +-int fnord () __attribute__((visibility("default"))); +-#endif +- +-int fnord () { return 42; } +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else +- { +- if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- else puts (dlerror ()); +- } +- /* dlclose (self); */ +- } +- else +- puts (dlerror ()); +- +- return status; +-}] +-_LT_EOF +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_dlunknown|x*) $3 ;; +- esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_TRY_DLOPEN_SELF +- +- +-# LT_SYS_DLOPEN_SELF +-# ------------------ +-AC_DEFUN([LT_SYS_DLOPEN_SELF], +-[m4_require([_LT_HEADER_DLFCN])dnl +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- mingw* | pw32* | cegcc*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; +- +- darwin*) +- # if libdl is installed we need to link against it +- AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ]) +- ;; +- +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) +- ]) +- ]) +- ]) +- ]) +- ]) +- ;; +- esac +- +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi +- +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" +- +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) +- +- if test "x$lt_cv_dlopen_self" = xyes; then +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac +- +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac +- +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-_LT_DECL([dlopen_support], [enable_dlopen], [0], +- [Whether dlopen is supported]) +-_LT_DECL([dlopen_self], [enable_dlopen_self], [0], +- [Whether dlopen of programs is supported]) +-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], +- [Whether dlopen of statically linked programs is supported]) +-])# LT_SYS_DLOPEN_SELF +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) +- +- +-# _LT_COMPILER_C_O([TAGNAME]) +-# --------------------------- +-# Check to see if options -c and -o are simultaneously supported by compiler. +-# This macro does not hard code the compiler like AC_PROG_CC_C_O. +-m4_defun([_LT_COMPILER_C_O], +-[m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_TAG_COMPILER])dnl +-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], +- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], +- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no +- $RM -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- fi +- fi +- chmod u+w . 2>&AS_MESSAGE_LOG_FD +- $RM -r conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files +- $RM out/* && rmdir out +- cd .. +- $RM -r conftest +- $RM -r conftest* +-]) +-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], +- [Does compiler simultaneously support -c and -o options?]) +-])# _LT_COMPILER_C_O +- +- +-# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +-# ---------------------------------- +-# Check to see if we can do hard links to lock some files if needed +-m4_defun([_LT_COMPILER_FILE_LOCKS], +-[m4_require([_LT_ENABLE_LOCK])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-_LT_COMPILER_C_O([$1]) +- +-hard_links="nottested" +-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $RM -r conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi +-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +-])# _LT_COMPILER_FILE_LOCKS +- +- +-# _LT_CHECK_OBJDIR +-# ---------------- +-m4_defun([_LT_CHECK_OBJDIR], +-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +-[rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- lt_cv_objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- lt_cv_objdir=_libs +-fi +-rmdir .libs 2>/dev/null]) +-objdir=$lt_cv_objdir +-_LT_DECL([], [objdir], [0], +- [The name of the directory that contains temporary libtool files])dnl +-m4_pattern_allow([LT_OBJDIR])dnl +-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", +- [Define to the sub-directory in which libtool stores uninstalled libraries.]) +-])# _LT_CHECK_OBJDIR +- +- +-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +-# -------------------------------------- +-# Check hardcoding attributes. +-m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +-[AC_MSG_CHECKING([how to hardcode library paths into programs]) +-_LT_TAGVAR(hardcode_action, $1)= +-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || +- test -n "$_LT_TAGVAR(runpath_var, $1)" || +- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then +- +- # We can hardcode non-existent directories. +- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && +- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then +- # Linking always hardcodes the temporary library directory. +- _LT_TAGVAR(hardcode_action, $1)=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- _LT_TAGVAR(hardcode_action, $1)=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- _LT_TAGVAR(hardcode_action, $1)=unsupported +-fi +-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) +- +-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || +- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +-_LT_TAGDECL([], [hardcode_action], [0], +- [How to hardcode a shared library path into an executable]) +-])# _LT_LINKER_HARDCODE_LIBPATH +- +- +-# _LT_CMD_STRIPLIB +-# ---------------- +-m4_defun([_LT_CMD_STRIPLIB], +-[m4_require([_LT_DECL_EGREP]) +-striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- old_striplib="$STRIP -S" +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) +- fi +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac +-fi +-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +-_LT_DECL([], [striplib], [1]) +-])# _LT_CMD_STRIPLIB +- +- +-# _LT_SYS_DYNAMIC_LINKER([TAG]) +-# ----------------------------- +-# PORTME Fill in your ld.so characteristics +-m4_defun([_LT_SYS_DYNAMIC_LINKER], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_OBJDUMP])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_CHECK_SHELL_FEATURES])dnl +-AC_MSG_CHECKING([dynamic linker characteristics]) +-m4_if([$1], +- [], [ +-if test "$GCC" = yes; then +- case $host_os in +- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; +- *) lt_awk_arg="/^libraries:/" ;; +- esac +- case $host_os in +- mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; +- *) lt_sed_strip_eq="s,=/,/,g" ;; +- esac +- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` +- case $lt_search_path_spec in +- *\;*) +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` +- ;; +- *) +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` +- ;; +- esac +- # Ok, now we have the path, separated by spaces, we can step through it +- # and add multilib dir if necessary. +- lt_tmp_lt_search_path_spec= +- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` +- for lt_sys_path in $lt_search_path_spec; do +- if test -d "$lt_sys_path/$lt_multi_os_dir"; then +- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" +- else +- test -d "$lt_sys_path" && \ +- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" +- fi +- done +- lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +-BEGIN {RS=" "; FS="/|\n";} { +- lt_foo=""; +- lt_count=0; +- for (lt_i = NF; lt_i > 0; lt_i--) { +- if ($lt_i != "" && $lt_i != ".") { +- if ($lt_i == "..") { +- lt_count++; +- } else { +- if (lt_count == 0) { +- lt_foo="/" $lt_i lt_foo; +- } else { +- lt_count--; +- } +- } +- } +- } +- if (lt_foo != "") { lt_freq[[lt_foo]]++; } +- if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +-}'` +- # AWK program above erroneously prepends '/' to C:/dos/paths +- # for these hosts. +- case $host_os in +- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ +- $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; +- esac +- sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix[[4-9]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- case $host_cpu in +- powerpc) +- # Since July 2007 AmigaOS4 officially supports .so libraries. +- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- ;; +- m68k) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- esac +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[[45]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32* | cegcc*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$cc_basename in +- yes,*) +- # gcc +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname~ +- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then +- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; +- fi' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $RM \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +-m4_if([$1], [],[ +- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) +- ;; +- mingw* | cegcc*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- ;; +- +- *,cl*) +- # Native MSVC +- libname_spec='$name' +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- library_names_spec='${libname}.dll.lib' +- +- case $build_os in +- mingw*) +- sys_lib_search_path_spec= +- lt_save_ifs=$IFS +- IFS=';' +- for lt_path in $LIB +- do +- IFS=$lt_save_ifs +- # Let DOS variable expansion print the short 8.3 style file name. +- lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` +- sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" +- done +- IFS=$lt_save_ifs +- # Convert to MSYS style. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` +- ;; +- cygwin*) +- # Convert to unix form, then to dos form, then back to unix form +- # but this time dos style (no spaces!) so that the unix form looks +- # like /cygdrive/c/PROGRA~1:/cygdr... +- sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` +- sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` +- sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- ;; +- *) +- sys_lib_search_path_spec="$LIB" +- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then +- # It is most probably a Windows format PATH. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- # FIXME: find the short name or the path components, as spaces are +- # common. (e.g. "Program Files" -> "PROGRA~1") +- ;; +- esac +- +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $RM \$dlpath' +- shlibpath_overrides_runpath=yes +- dynamic_linker='Win32 link.exe' +- ;; +- +- *) +- # Assume MSVC wrapper +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' +- dynamic_linker='Win32 ld.exe' +- ;; +- esac +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +-m4_if([$1], [],[ +- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[[23]].*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2.*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[[01]]* | freebsdelf3.[[01]]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ +- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- *) # from 4.6 on, and DragonFly +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-haiku*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- dynamic_linker="$host_os runtime_loader" +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555, ... +- postinstall_cmds='chmod 555 $lib' +- # or fails outright, so override atomically: +- install_override_mode=555 +- ;; +- +-interix[[3-9]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux # correct to gnu/linux during the next big refactor +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- +- # Some binutils ld are patched to set DT_RUNPATH +- AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], +- [lt_cv_shlibpath_overrides_runpath=no +- save_LDFLAGS=$LDFLAGS +- save_libdir=$libdir +- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ +- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], +- [lt_cv_shlibpath_overrides_runpath=yes])]) +- LDFLAGS=$save_LDFLAGS +- libdir=$save_libdir +- ]) +- shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath +- +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-*nto* | *qnx*) +- version_type=qnx +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='ldqnx.so' +- ;; +- +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-rdos*) +- dynamic_linker=no +- ;; +- +-solaris*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.3*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; +- +-tpf*) +- # TPF is a cross-target only. Preferred cross-host = GNU/Linux. +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-uts4*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- +-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then +- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +-fi +-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then +- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +-fi +- +-_LT_DECL([], [variables_saved_for_relink], [1], +- [Variables whose values should be saved in libtool wrapper scripts and +- restored at link time]) +-_LT_DECL([], [need_lib_prefix], [0], +- [Do we need the "lib" prefix for modules?]) +-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +-_LT_DECL([], [version_type], [0], [Library versioning type]) +-_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +-_LT_DECL([], [shlibpath_overrides_runpath], [0], +- [Is shlibpath searched before the hard-coded library search path?]) +-_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +-_LT_DECL([], [library_names_spec], [1], +- [[List of archive names. First name is the real one, the rest are links. +- The last name is the one that the linker finds with -lNAME]]) +-_LT_DECL([], [soname_spec], [1], +- [[The coded name of the library, if different from the real name]]) +-_LT_DECL([], [install_override_mode], [1], +- [Permission mode override for installation of shared libraries]) +-_LT_DECL([], [postinstall_cmds], [2], +- [Command to use after installation of a shared archive]) +-_LT_DECL([], [postuninstall_cmds], [2], +- [Command to use after uninstallation of a shared archive]) +-_LT_DECL([], [finish_cmds], [2], +- [Commands used to finish a libtool library installation in a directory]) +-_LT_DECL([], [finish_eval], [1], +- [[As "finish_cmds", except a single script fragment to be evaled but +- not shown]]) +-_LT_DECL([], [hardcode_into_libs], [0], +- [Whether we should hardcode library paths into libraries]) +-_LT_DECL([], [sys_lib_search_path_spec], [2], +- [Compile-time system search path for libraries]) +-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], +- [Run-time system search path for libraries]) +-])# _LT_SYS_DYNAMIC_LINKER +- +- +-# _LT_PATH_TOOL_PREFIX(TOOL) +-# -------------------------- +-# find a file program which can recognize shared library +-AC_DEFUN([_LT_PATH_TOOL_PREFIX], +-[m4_require([_LT_DECL_EGREP])dnl +-AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +-[[\\/*] | ?:[\\/]*]) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="m4_if([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <<_LT_EOF 1>&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-_LT_EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-_LT_DECL([], [MAGIC_CMD], [0], +- [Used to examine libraries when file_magic_cmd begins with "file"])dnl +-])# _LT_PATH_TOOL_PREFIX +- +-# Old name: +-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) +- +- +-# _LT_PATH_MAGIC +-# -------------- +-# find a file program which can recognize a shared library +-m4_defun([_LT_PATH_MAGIC], +-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) +- else +- MAGIC_CMD=: +- fi +-fi +-])# _LT_PATH_MAGIC +- +- +-# LT_PATH_LD +-# ---------- +-# find the pathname to the GNU or non-GNU linker +-AC_DEFUN([LT_PATH_LD], +-[AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl +- +-AC_ARG_WITH([gnu-ld], +- [AS_HELP_STRING([--with-gnu-ld], +- [assume the C compiler uses GNU ld @<:@default=no@:>@])], +- [test "$withval" = no || with_gnu_ld=yes], +- [with_gnu_ld=no])dnl +- +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by $CC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | ?:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` +- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) +-else +- AC_MSG_CHECKING([for non-GNU ld]) +-fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some variants of GNU ld only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then +- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +- lt_cv_file_magic_cmd='func_win32_libid' +- else +- # Keep this pattern in sync with the one in func_win32_libid. +- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- fi +- ;; +- +-cegcc*) +- # use the weaker test based on 'objdump'. See mingw*. +- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; +- +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-freebsd* | dragonfly*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-haiku*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file +- case $host_cpu in +- ia64*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' +- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +- ;; +- hppa*64*) +- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] +- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl +- ;; +- *) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- esac +- ;; +- +-interix[[3-9]]*) +- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-netbsd*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' +- fi +- ;; +- +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-*nto* | *qnx*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-openbsd*) +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-rdos*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.3*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- siemens) +- lt_cv_deplibs_check_method=pass_all +- ;; +- pc) +- lt_cv_deplibs_check_method=pass_all +- ;; +- esac +- ;; +- +-tpf*) +- lt_cv_deplibs_check_method=pass_all +- ;; +-esac +-]) +- +-file_magic_glob= +-want_nocaseglob=no +-if test "$build" = "$host"; then +- case $host_os in +- mingw* | pw32*) +- if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then +- want_nocaseglob=yes +- else +- file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` +- fi +- ;; +- esac +-fi +- +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +- +-_LT_DECL([], [deplibs_check_method], [1], +- [Method to check whether dependent libraries are shared objects]) +-_LT_DECL([], [file_magic_cmd], [1], +- [Command to use when deplibs_check_method = "file_magic"]) +-_LT_DECL([], [file_magic_glob], [1], +- [How to find potential files when deplibs_check_method = "file_magic"]) +-_LT_DECL([], [want_nocaseglob], [1], +- [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +-])# _LT_CHECK_MAGIC_METHOD +- +- +-# LT_PATH_NM +-# ---------- +-# find the pathname to a BSD- or MS-compatible name lister +-AC_DEFUN([LT_PATH_NM], +-[AC_REQUIRE([AC_PROG_CC])dnl +-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- lt_nm_to_check="${ac_tool_prefix}nm" +- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then +- lt_nm_to_check="$lt_nm_to_check nm" +- fi +- for lt_tmp_nm in $lt_nm_to_check; do +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- tmp_nm="$ac_dir/$lt_tmp_nm" +- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in +- */dev/null* | *'Invalid file or object type'*) +- lt_cv_path_NM="$tmp_nm -B" +- break +- ;; +- *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in +- */dev/null*) +- lt_cv_path_NM="$tmp_nm -p" +- break +- ;; +- *) +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- ;; +- esac +- ;; +- esac +- fi +- done +- IFS="$lt_save_ifs" +- done +- : ${lt_cv_path_NM=no} +-fi]) +-if test "$lt_cv_path_NM" != "no"; then +- NM="$lt_cv_path_NM" +-else +- # Didn't find any BSD compatible name lister, look for dumpbin. +- if test -n "$DUMPBIN"; then : +- # Let the user override the test. +- else +- AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) +- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in +- *COFF*) +- DUMPBIN="$DUMPBIN -symbols" +- ;; +- *) +- DUMPBIN=: +- ;; +- esac +- fi +- AC_SUBST([DUMPBIN]) +- if test "$DUMPBIN" != ":"; then +- NM="$DUMPBIN" +- fi +-fi +-test -z "$NM" && NM=nm +-AC_SUBST([NM]) +-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl +- +-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], +- [lt_cv_nm_interface="BSD nm" +- echo "int some_variable = 0;" > conftest.$ac_ext +- (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$ac_compile" 2>conftest.err) +- cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) +- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) +- cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) +- cat conftest.out >&AS_MESSAGE_LOG_FD +- if $GREP 'External.*some_variable' conftest.out > /dev/null; then +- lt_cv_nm_interface="MS dumpbin" +- fi +- rm -rf conftest*]) +-])# LT_PATH_NM +- +-# Old names: +-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AM_PROG_NM], []) +-dnl AC_DEFUN([AC_PROG_NM], []) +- +-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +-# -------------------------------- +-# how to determine the name of the shared library +-# associated with a specific link library. +-# -- PORTME fill in with the dynamic library characteristics +-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +-[m4_require([_LT_DECL_EGREP]) +-m4_require([_LT_DECL_OBJDUMP]) +-m4_require([_LT_DECL_DLLTOOL]) +-AC_CACHE_CHECK([how to associate runtime and link libraries], +-lt_cv_sharedlib_from_linklib_cmd, +-[lt_cv_sharedlib_from_linklib_cmd='unknown' +- +-case $host_os in +-cygwin* | mingw* | pw32* | cegcc*) +- # two different shell functions defined in ltmain.sh +- # decide which to use based on capabilities of $DLLTOOL +- case `$DLLTOOL --help 2>&1` in +- *--identify-strict*) +- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib +- ;; +- *) +- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback +- ;; +- esac +- ;; +-*) +- # fallback: assume linklib IS sharedlib +- lt_cv_sharedlib_from_linklib_cmd="$ECHO" +- ;; +-esac +-]) +-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO +- +-_LT_DECL([], [sharedlib_from_linklib_cmd], [1], +- [Command to associate shared and link libraries]) +-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +- +- +-# _LT_PATH_MANIFEST_TOOL +-# ---------------------- +-# locate the manifest tool +-m4_defun([_LT_PATH_MANIFEST_TOOL], +-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], +- [lt_cv_path_mainfest_tool=no +- echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD +- $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out +- cat conftest.err >&AS_MESSAGE_LOG_FD +- if $GREP 'Manifest Tool' conftest.out > /dev/null; then +- lt_cv_path_mainfest_tool=yes +- fi +- rm -rf conftest*]) +-if test "x$lt_cv_path_mainfest_tool" != xyes; then +- MANIFEST_TOOL=: +-fi +-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +-])# _LT_PATH_MANIFEST_TOOL +- +- +-# LT_LIB_M +-# -------- +-# check for math library +-AC_DEFUN([LT_LIB_M], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) +- # These system don't have libm, or don't need it +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, cos, LIBM="-lm") +- ;; +-esac +-AC_SUBST([LIBM]) +-])# LT_LIB_M +- +-# Old name: +-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_CHECK_LIBM], []) +- +- +-# _LT_COMPILER_NO_RTTI([TAGNAME]) +-# ------------------------------- +-m4_defun([_LT_COMPILER_NO_RTTI], +-[m4_require([_LT_TAG_COMPILER])dnl +- +-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- +-if test "$GCC" = yes; then +- case $cc_basename in +- nvcc*) +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; +- esac +- +- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], +- lt_cv_prog_compiler_rtti_exceptions, +- [-fno-rtti -fno-exceptions], [], +- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +-fi +-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], +- [Compiler flag to turn off builtin functions]) +-])# _LT_COMPILER_NO_RTTI +- +- +-# _LT_CMD_GLOBAL_SYMBOLS +-# ---------------------- +-m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-AC_REQUIRE([LT_PATH_LD])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_TAG_COMPILER])dnl +- +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +-[ +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' +- +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' +- +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32* | cegcc*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDEGRST]]' +- fi +- ;; +-irix* | nonstopux*) +- symcode='[[BCDEGRST]]' +- ;; +-osf*) +- symcode='[[BCDEGQRST]]' +- ;; +-solaris*) +- symcode='[[BDRT]]' +- ;; +-sco3.2v5*) +- symcode='[[DT]]' +- ;; +-sysv4.2uw2*) +- symcode='[[DT]]' +- ;; +-sysv5* | sco5v6* | unixware* | OpenUNIX*) +- symcode='[[ABDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac +- +-# If we're using GNU nm, then use its standard symbol codes. +-case `$NM -V 2>&1` in +-*GNU* | *'with BFD'*) +- symcode='[[ABCDGIRSTW]]' ;; +-esac +- +-# Transform an extracted symbol line into a proper C declaration. +-# Some systems (esp. on ia64) link data and code symbols differently, +-# so use this general approach. +-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $build_os in +-mingw*) +- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac +- +-# Try without a prefix underscore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +- symxfrm="\\1 $ac_symprfx\\2 \\2" +- +- # Write the raw and C identifiers. +- if test "$lt_cv_nm_interface" = "MS dumpbin"; then +- # Fake it for dumpbin and say T for any non-static function +- # and D for any global variable. +- # Also find C++ and __fastcall symbols from MSVC++, +- # which start with @ or ?. +- lt_cv_sys_global_symbol_pipe="$AWK ['"\ +-" {last_section=section; section=\$ 3};"\ +-" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +-" \$ 0!~/External *\|/{next};"\ +-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +-" {if(hide[section]) next};"\ +-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +-" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +-" ' prfx=^$ac_symprfx]" +- else +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" +- fi +- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- +- rm -rf conftest* +- cat > conftest.$ac_ext <<_LT_EOF +-#ifdef __cplusplus +-extern "C" { +-#endif +-char nm_test_var; +-void nm_test_func(void); +-void nm_test_func(void){} +-#ifdef __cplusplus +-} +-#endif +-int main(){nm_test_var='a';nm_test_func();return(0);} +-_LT_EOF +- +- if AC_TRY_EVAL(ac_compile); then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then +- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then +- cat <<_LT_EOF > conftest.$ac_ext +-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +-/* DATA imports from DLLs on WIN32 con't be const, because runtime +- relocations are performed -- see ld's documentation on pseudo-relocs. */ +-# define LT@&t@_DLSYM_CONST +-#elif defined(__osf__) +-/* This system does not cope well with relocations in const data. */ +-# define LT@&t@_DLSYM_CONST +-#else +-# define LT@&t@_DLSYM_CONST const +-#endif +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-_LT_EOF +- # Now generate the symbol file. +- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' +- +- cat <<_LT_EOF >> conftest.$ac_ext +- +-/* The mapping between symbol names and symbols. */ +-LT@&t@_DLSYM_CONST struct { +- const char *name; +- void *address; +-} +-lt__PROGRAM__LTX_preloaded_symbols[[]] = +-{ +- { "@PROGRAM@", (void *) 0 }, +-_LT_EOF +- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext +- cat <<\_LT_EOF >> conftest.$ac_ext +- {0, (void *) 0} +-}; +- +-/* This works around a problem in FreeBSD linker */ +-#ifdef FREEBSD_WORKAROUND +-static const void *lt_preloaded_setup() { +- return lt__PROGRAM__LTX_preloaded_symbols; +-} +-#endif +- +-#ifdef __cplusplus +-} +-#endif +-_LT_EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- lt_globsym_save_LIBS=$LIBS +- lt_globsym_save_CFLAGS=$CFLAGS +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then +- pipe_works=yes +- fi +- LIBS=$lt_globsym_save_LIBS +- CFLAGS=$lt_globsym_save_CFLAGS +- else +- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD +- cat conftest.$ac_ext >&5 +- fi +- rm -rf conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +-]) +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- lt_cv_sys_global_symbol_to_cdecl= +-fi +-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +- +-# Response file support. +-if test "$lt_cv_nm_interface" = "MS dumpbin"; then +- nm_file_list_spec='@' +-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then +- nm_file_list_spec='@' +-fi +- +-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], +- [Take the output of nm and produce a listing of raw symbols and C names]) +-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], +- [Transform the output of nm in a proper C declaration]) +-_LT_DECL([global_symbol_to_c_name_address], +- [lt_cv_sys_global_symbol_to_c_name_address], [1], +- [Transform the output of nm in a C name address pair]) +-_LT_DECL([global_symbol_to_c_name_address_lib_prefix], +- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], +- [Transform the output of nm in a C name address pair when lib prefix is needed]) +-_LT_DECL([], [nm_file_list_spec], [1], +- [Specify filename containing input files for $NM]) +-]) # _LT_CMD_GLOBAL_SYMBOLS +- +- +-# _LT_COMPILER_PIC([TAGNAME]) +-# --------------------------- +-m4_defun([_LT_COMPILER_PIC], +-[m4_require([_LT_TAG_COMPILER])dnl +-_LT_TAGVAR(lt_prog_compiler_wl, $1)= +-_LT_TAGVAR(lt_prog_compiler_pic, $1)= +-_LT_TAGVAR(lt_prog_compiler_static, $1)= +- +-m4_if([$1], [CXX], [ +- # C++ specific cases for pic, static, wl, etc. +- if test "$GXX" = yes; then +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- m68k) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- esac +- ;; +- +- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- mingw* | cygwin* | os2* | pw32* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- # Although the cygwin gcc ignores -fPIC, still need this for old-style +- # (--disable-auto-import) libraries +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- *djgpp*) +- # DJGPP does not support shared libraries at all +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- haiku*) +- # PIC is the default for Haiku. +- # The "-static" flag exists, but is broken. +- _LT_TAGVAR(lt_prog_compiler_static, $1)= +- ;; +- interix[[3-9]]*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- hpux*) +- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +- # sets the default TLS model and affects inlining. +- case $host_cpu in +- hppa*64*) +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- *qnx* | *nto*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- else +- case $host_os in +- aix[[4-9]]*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- chorus*) +- case $cc_basename in +- cxch68*) +- # Green Hills C++ Compiler +- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" +- ;; +- esac +- ;; +- mingw* | cygwin* | os2* | pw32* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- dgux*) +- case $cc_basename in +- ec++*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- freebsd* | dragonfly*) +- # FreeBSD uses GNU C++ +- ;; +- hpux9* | hpux10* | hpux11*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- if test "$host_cpu" != ia64; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- fi +- ;; +- aCC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- ;; +- *) +- ;; +- esac +- ;; +- interix*) +- # This is c89, which is MS Visual C++ (no shared libs) +- # Anyone wants to do a port? +- ;; +- irix5* | irix6* | nonstopux*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- # CC pic flag -KPIC is the default. +- ;; +- *) +- ;; +- esac +- ;; +- linux* | k*bsd*-gnu | kopensolaris*-gnu) +- case $cc_basename in +- KCC*) +- # KAI C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- ecpc* ) +- # old Intel C++ for x86_64 which still supported -KPIC. +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- icpc* ) +- # Intel C++, used to be incompatible with GCC. +- # ICC 10 doesn't accept -KPIC any more. +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgCC* | pgcpp*) +- # Portland Group C++ compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- cxx*) +- # Compaq C++ +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) +- # IBM XL 8.0, 9.0 on PPC and BlueGene +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- esac +- ;; +- esac +- ;; +- lynxos*) +- ;; +- m88k*) +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' +- ;; +- *) +- ;; +- esac +- ;; +- netbsd*) +- ;; +- *qnx* | *nto*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- cxx*) +- # Digital/Compaq C++ +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- psos*) +- ;; +- solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- ;; +- *) +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- lcc*) +- # Lucid +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- *) +- ;; +- esac +- ;; +- vxworks*) +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-], +-[ +- if test "$GCC" = yes; then +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- m68k) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- esac +- ;; +- +- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- +- mingw* | cygwin* | pw32* | os2* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- # Although the cygwin gcc ignores -fPIC, still need this for old-style +- # (--disable-auto-import) libraries +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- +- haiku*) +- # PIC is the default for Haiku. +- # The "-static" flag exists, but is broken. +- _LT_TAGVAR(lt_prog_compiler_static, $1)= +- ;; +- +- hpux*) +- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +- # sets the default TLS model and affects inlining. +- case $host_cpu in +- hppa*64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- +- interix[[3-9]]*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- enable_shared=no +- ;; +- +- *nto* | *qnx*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- +- case $cc_basename in +- nvcc*) # Cuda Compiler Driver 2.2 +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' +- if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" +- fi +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- +- mingw* | cygwin* | pw32* | os2* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- +- hpux9* | hpux10* | hpux11*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- ;; +- +- irix5* | irix6* | nonstopux*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC (with -KPIC) is the default. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- linux* | k*bsd*-gnu | kopensolaris*-gnu) +- case $cc_basename in +- # old Intel for x86_64 which still supported -KPIC. +- ecc*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- # icc used to be incompatible with GCC. +- # ICC 10 doesn't accept -KPIC any more. +- icc* | ifort*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- # Lahey Fortran 8.1. +- lf95*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' +- ;; +- nagfor*) +- # NAG Fortran compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- ccc*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All Alpha code is PIC. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- xl* | bgxl* | bgf* | mpixl*) +- # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) +- # Sun Fortran 8.3 passes all unrecognized flags to the linker +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='' +- ;; +- *Sun\ F* | *Sun*Fortran*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- *Sun\ C*) +- # Sun C 5.9 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- *Intel*\ [[CF]]*Compiler*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- *Portland\ Group*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- esac +- ;; +- +- newsos6) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *nto* | *qnx*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- +- osf3* | osf4* | osf5*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All OSF/1 code is PIC. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- rdos*) +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- solaris*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; +- *) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; +- esac +- ;; +- +- sunos4*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- unicos*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- +- uts4*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *) +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-]) +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" +- ;; +-esac +- +-AC_CACHE_CHECK([for $compiler option to produce PIC], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) +- +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then +- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], +- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], +- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in +- "" | " "*) ;; +- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; +- esac], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +-fi +-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], +- [Additional compiler flags for building library objects]) +- +-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], +- [How to pass a linker flag through the compiler]) +-# +-# Check to make sure the static flag actually works. +-# +-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], +- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), +- $lt_tmp_static_flag, +- [], +- [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], +- [Compiler flag to prevent dynamic linking]) +-])# _LT_COMPILER_PIC +- +- +-# _LT_LINKER_SHLIBS([TAGNAME]) +-# ---------------------------- +-# See if the linker supports building shared libraries. +-m4_defun([_LT_LINKER_SHLIBS], +-[AC_REQUIRE([LT_PATH_LD])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-m4_require([_LT_PATH_MANIFEST_TOOL])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +-m4_require([_LT_TAG_COMPILER])dnl +-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-m4_if([$1], [CXX], [ +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +- case $host_os in +- aix[[4-9]]*) +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- # Also, AIX nm treats weak defined symbols like other global defined +- # symbols, whereas GNU nm marks them as "W". +- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- fi +- ;; +- pw32*) +- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" +- ;; +- cygwin* | mingw* | cegcc*) +- case $cc_basename in +- cl*) +- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' +- ;; +- *) +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] +- ;; +- esac +- ;; +- *) +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- esac +-], [ +- runpath_var= +- _LT_TAGVAR(allow_undefined_flag, $1)= +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(archive_cmds, $1)= +- _LT_TAGVAR(archive_expsym_cmds, $1)= +- _LT_TAGVAR(compiler_needs_object, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- _LT_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(hardcode_automatic, $1)=no +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- _LT_TAGVAR(hardcode_minus_L, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_TAGVAR(inherit_rpath, $1)=no +- _LT_TAGVAR(link_all_deplibs, $1)=unknown +- _LT_TAGVAR(module_cmds, $1)= +- _LT_TAGVAR(module_expsym_cmds, $1)= +- _LT_TAGVAR(old_archive_from_new_cmds, $1)= +- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= +- _LT_TAGVAR(thread_safe_flag_spec, $1)= +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- _LT_TAGVAR(include_expsyms, $1)= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- # Exclude shared library initialization/finalization symbols. +-dnl Note also adjust exclude_expsyms for C++ above. +- extract_expsyms_cmds= +- +- case $host_os in +- cygwin* | mingw* | pw32* | cegcc*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- esac +- +- _LT_TAGVAR(ld_shlibs, $1)=yes +- +- # On some targets, GNU ld is compatible enough with the native linker +- # that we're better off using the native interface for both. +- lt_use_gnu_ld_interface=no +- if test "$with_gnu_ld" = yes; then +- case $host_os in +- aix*) +- # The AIX port of GNU ld has always aspired to compatibility +- # with the native linker. However, as the warning in the GNU ld +- # block says, versions before 2.19.5* couldn't really create working +- # shared libraries, regardless of the interface used. +- case `$LD -v 2>&1` in +- *\ \(GNU\ Binutils\)\ 2.19.5*) ;; +- *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; +- *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; +- *) +- lt_use_gnu_ld_interface=yes +- ;; +- esac +- ;; +- *) +- lt_use_gnu_ld_interface=yes +- ;; +- esac +- fi +- +- if test "$lt_use_gnu_ld_interface" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>&1` in +- *GNU\ gold*) supports_anon_versioning=yes ;; +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix[[3-9]]*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: the GNU linker, at least up to release 2.19, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to install binutils +-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +-*** You will then need to restart the configuration process. +- +-_LT_EOF +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='' +- ;; +- m68k) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- ;; +- +- beos*) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] +- +- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- haiku*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- interix[[3-9]]*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- +- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) +- tmp_diet=no +- if test "$host_os" = linux-dietlibc; then +- case $cc_basename in +- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) +- esac +- fi +- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ +- && test "$tmp_diet" = no +- then +- tmp_addflag=' $pic_flag' +- tmp_sharedflag='-shared' +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95* | pgfortran*) +- # Portland Group f77 and f90 compilers +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- lf95*) # Lahey Fortran 8.1 +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- tmp_sharedflag='--shared' ;; +- xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) +- tmp_sharedflag='-qmkshrobj' +- tmp_addflag= ;; +- nvcc*) # Cuda Compiler Driver 2.2 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- ;; +- esac +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) # Sun C 5.9 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- tmp_sharedflag='-G' ;; +- *Sun\ F*) # Sun Fortran 8.3 +- tmp_sharedflag='-G' ;; +- esac +- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- +- case $cc_basename in +- xlf* | bgf* | bgxlf* | mpixlf*) +- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself +- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' +- fi +- ;; +- esac +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris*) +- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- ;; +- *) +- # For security reasons, it is highly recommended that you always +- # use absolute paths for naming shared libraries, and exclude the +- # DT_RUNPATH tag from executables and libraries. But doing so +- # requires that you compile everything twice, which is a pain. +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- sunos4*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- +- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then +- runpath_var= +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- fi +- ;; +- +- aix[[4-9]]*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- # Also, AIX nm treats weak defined symbols like other global +- # defined symbols, whereas GNU nm marks them as "W". +- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_TAGVAR(archive_cmds, $1)='' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' +- +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && +- strings "$collect2name" | $GREP resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- : +- else +- # We have old collect2 +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- if test "$with_gnu_ld" = yes; then +- # We only use this code for GNU lds that support --whole-archive. +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- else +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='' +- ;; +- m68k) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- ;; +- +- bsdi[[45]]*) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- case $cc_basename in +- cl*) +- # Native MSVC +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='@' +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; +- else +- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; +- fi~ +- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ +- linknames=' +- # The linker will not automatically build a static lib if we build a DLL. +- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' +- # Don't use ranlib +- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' +- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ +- lt_tool_outputfile="@TOOL_OUTPUT@"~ +- case $lt_outputfile in +- *.exe|*.EXE) ;; +- *) +- lt_outputfile="$lt_outputfile.exe" +- lt_tool_outputfile="$lt_tool_outputfile.exe" +- ;; +- esac~ +- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then +- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; +- $RM "$lt_outputfile.manifest"; +- fi' +- ;; +- *) +- # Assume MSVC wrapper +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- # FIXME: Should let the user specify the lib program. +- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- ;; +- esac +- ;; +- +- darwin* | rhapsody*) +- _LT_DARWIN_LINKER_FEATURES($1) +- ;; +- +- dgux*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2.*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | dragonfly*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- hpux9*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_direct, $1)=yes +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- +- hpux10*) +- if test "$GCC" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- fi +- ;; +- +- hpux11*) +- if test "$GCC" = yes && test "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- m4_if($1, [], [ +- # Older versions of the 11.00 compiler do not understand -b yet +- # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) +- _LT_LINKER_OPTION([if $CC understands -b], +- _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], +- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], +- [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], +- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- fi +- ;; +- +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- # Try to use the -exported_symbol ld option, if it does not +- # work, assume that -exports_file does not work either and +- # implicitly export all symbols. +- # This should be the same for all languages, so no per-tag cache variable. +- AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], +- [lt_cv_irix_exported_symbol], +- [save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" +- AC_LINK_IFELSE( +- [AC_LANG_SOURCE( +- [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], +- [C++], [[int foo (void) { return 0; }]], +- [Fortran 77], [[ +- subroutine foo +- end]], +- [Fortran], [[ +- subroutine foo +- end]])])], +- [lt_cv_irix_exported_symbol=yes], +- [lt_cv_irix_exported_symbol=no]) +- LDFLAGS="$save_LDFLAGS"]) +- if test "$lt_cv_irix_exported_symbol" = yes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' +- fi +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(inherit_rpath, $1)=yes +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- newsos6) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *nto* | *qnx*) +- ;; +- +- openbsd*) +- if test -f /usr/libexec/ld.so; then +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- else +- case $host_os in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- os2*) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; +- +- osf3*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- else +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ +- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' +- +- # Both c and cxx compiler support -rpath directly +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- solaris*) +- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +- else +- case `$CC -V 2>&1` in +- *"Compilers 5.0"*) +- wlarc='' +- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' +- ;; +- *) +- wlarc='${wl}' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +- ;; +- esac +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine and reorder linker options, +- # but understands `-z linker_flag'. GCC discards it without `$wl', +- # but is careful enough not to reorder. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- if test "$GCC" = yes; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' +- fi +- ;; +- esac +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4) +- case $host_vendor in +- sni) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' +- _LT_TAGVAR(hardcode_direct, $1)=no +- ;; +- motorola) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4.3*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- _LT_TAGVAR(ld_shlibs, $1)=yes +- fi +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- uts4*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- +- if test x$host_vendor = xsni; then +- case $host in +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' +- ;; +- esac +- fi +- fi +-]) +-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld +- +-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +-_LT_DECL([], [extract_expsyms_cmds], [2], +- [The commands to extract the exported symbol list from a shared archive]) +- +-# +-# Do we need to explicitly link libc? +-# +-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +-x|xyes) +- # Assume -lc should be added +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $_LT_TAGVAR(archive_cmds, $1) in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_CACHE_CHECK([whether -lc should be explicitly linked in], +- [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), +- [$RM -r conftest* +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) +- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) +- _LT_TAGVAR(allow_undefined_flag, $1)= +- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) +- then +- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- else +- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- fi +- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $RM -r conftest* +- ]) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) +- ;; +- esac +- fi +- ;; +-esac +- +-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], +- [Whether or not to add -lc for building shared libraries]) +-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], +- [enable_shared_with_static_runtimes], [0], +- [Whether or not to disallow shared libs when runtime libs are static]) +-_LT_TAGDECL([], [export_dynamic_flag_spec], [1], +- [Compiler flag to allow reflexive dlopens]) +-_LT_TAGDECL([], [whole_archive_flag_spec], [1], +- [Compiler flag to generate shared objects directly from archives]) +-_LT_TAGDECL([], [compiler_needs_object], [1], +- [Whether the compiler copes with passing no objects directly]) +-_LT_TAGDECL([], [old_archive_from_new_cmds], [2], +- [Create an old-style archive from a shared archive]) +-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], +- [Create a temporary old-style archive to link instead of a shared archive]) +-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +-_LT_TAGDECL([], [archive_expsym_cmds], [2]) +-_LT_TAGDECL([], [module_cmds], [2], +- [Commands used to build a loadable module if different from building +- a shared archive.]) +-_LT_TAGDECL([], [module_expsym_cmds], [2]) +-_LT_TAGDECL([], [with_gnu_ld], [1], +- [Whether we are building with GNU ld or not]) +-_LT_TAGDECL([], [allow_undefined_flag], [1], +- [Flag that allows shared libraries with undefined symbols to be built]) +-_LT_TAGDECL([], [no_undefined_flag], [1], +- [Flag that enforces no undefined symbols]) +-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], +- [Flag to hardcode $libdir into a binary during linking. +- This must work even if $libdir does not exist]) +-_LT_TAGDECL([], [hardcode_libdir_separator], [1], +- [Whether we need a single "-rpath" flag with a separated argument]) +-_LT_TAGDECL([], [hardcode_direct], [0], +- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +- DIR into the resulting binary]) +-_LT_TAGDECL([], [hardcode_direct_absolute], [0], +- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +- DIR into the resulting binary and the resulting library dependency is +- "absolute", i.e impossible to change by setting ${shlibpath_var} if the +- library is relocated]) +-_LT_TAGDECL([], [hardcode_minus_L], [0], +- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR +- into the resulting binary]) +-_LT_TAGDECL([], [hardcode_shlibpath_var], [0], +- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +- into the resulting binary]) +-_LT_TAGDECL([], [hardcode_automatic], [0], +- [Set to "yes" if building a shared library automatically hardcodes DIR +- into the library and all subsequent libraries and executables linked +- against it]) +-_LT_TAGDECL([], [inherit_rpath], [0], +- [Set to yes if linker adds runtime paths of dependent libraries +- to runtime path list]) +-_LT_TAGDECL([], [link_all_deplibs], [0], +- [Whether libtool must link a program against all its dependency libraries]) +-_LT_TAGDECL([], [always_export_symbols], [0], +- [Set to "yes" if exported symbols are required]) +-_LT_TAGDECL([], [export_symbols_cmds], [2], +- [The commands to list exported symbols]) +-_LT_TAGDECL([], [exclude_expsyms], [1], +- [Symbols that should not be listed in the preloaded symbols]) +-_LT_TAGDECL([], [include_expsyms], [1], +- [Symbols that must always be exported]) +-_LT_TAGDECL([], [prelink_cmds], [2], +- [Commands necessary for linking programs (against libraries) with templates]) +-_LT_TAGDECL([], [postlink_cmds], [2], +- [Commands necessary for finishing linking programs]) +-_LT_TAGDECL([], [file_list_spec], [1], +- [Specify filename containing input files]) +-dnl FIXME: Not yet implemented +-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +-dnl [Compiler flag to generate thread safe objects]) +-])# _LT_LINKER_SHLIBS +- +- +-# _LT_LANG_C_CONFIG([TAG]) +-# ------------------------ +-# Ensure that the configuration variables for a C compiler are suitably +-# defined. These variables are subsequently used by _LT_CONFIG to write +-# the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_C_CONFIG], +-[m4_require([_LT_DECL_EGREP])dnl +-lt_save_CC="$CC" +-AC_LANG_PUSH(C) +- +-# Source file extension for C test sources. +-ac_ext=c +- +-# Object file extension for compiled C test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}' +- +-_LT_TAG_COMPILER +-# Save the default compiler, since it gets overwritten when the other +-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +-compiler_DEFAULT=$CC +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- LT_SYS_DLOPEN_SELF +- _LT_CMD_STRIPLIB +- +- # Report which library types will actually be built +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_CONFIG($1) +-fi +-AC_LANG_POP +-CC="$lt_save_CC" +-])# _LT_LANG_C_CONFIG +- +- +-# _LT_LANG_CXX_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for a C++ compiler are suitably +-# defined. These variables are subsequently used by _LT_CONFIG to write +-# the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_CXX_CONFIG], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_PATH_MANIFEST_TOOL])dnl +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_PROG_CXXCPP +-else +- _lt_caught_CXX_error=yes +-fi +- +-AC_LANG_PUSH(C++) +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(compiler_needs_object, $1)=no +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for C++ test sources. +-ac_ext=cpp +- +-# Object file extension for compiled C++ test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the CXX compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_caught_CXX_error" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="int some_variable = 0;" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC=$CC +- lt_save_CFLAGS=$CFLAGS +- lt_save_LD=$LD +- lt_save_GCC=$GCC +- GCC=$GXX +- lt_save_with_gnu_ld=$with_gnu_ld +- lt_save_path_LD=$lt_cv_path_LD +- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then +- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +- else +- $as_unset lt_cv_prog_gnu_ld +- fi +- if test -n "${lt_cv_path_LDCXX+set}"; then +- lt_cv_path_LD=$lt_cv_path_LDCXX +- else +- $as_unset lt_cv_path_LD +- fi +- test -z "${LDCXX+set}" || LD=$LDCXX +- CC=${CXX-"c++"} +- CFLAGS=$CXXFLAGS +- compiler=$CC +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- +- if test -n "$compiler"; then +- # We don't want -fno-exception when compiling C++ code, so set the +- # no_builtin_flag separately +- if test "$GXX" = yes; then +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +- else +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- fi +- +- if test "$GXX" = yes; then +- # Set up default GNU C++ configuration +- +- LT_PATH_LD +- +- # Check if GNU C++ uses GNU ld as the underlying linker, since the +- # archiving commands below assume that GNU ld is being used. +- if test "$with_gnu_ld" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # If archive_cmds runs LD, not CC, wlarc should be empty +- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to +- # investigate it a little bit more. (MM) +- wlarc='${wl}' +- +- # ancient GNU ld didn't support --whole-archive et. al. +- if eval "`$CC -print-prog-name=ld` --help 2>&1" | +- $GREP 'no-whole-archive' > /dev/null; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- with_gnu_ld=no +- wlarc= +- +- # A generic and very simple default shared library creation +- # command for GNU C++ for the case where it uses the native +- # linker, instead of GNU ld. If possible, this setting should +- # overridden to take advantage of the native linker features on +- # the platform it is being used on. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- fi +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- +- else +- GXX=no +- with_gnu_ld=no +- wlarc= +- fi +- +- # PORTME: fill in a description of your system's C++ link characteristics +- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +- _LT_TAGVAR(ld_shlibs, $1)=yes +- case $host_os in +- aix3*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) +- for ld_flag in $LDFLAGS; do +- case $ld_flag in +- *-brtl*) +- aix_use_runtimelinking=yes +- break +- ;; +- esac +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_TAGVAR(archive_cmds, $1)='' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' +- +- if test "$GXX" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && +- strings "$collect2name" | $GREP resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- : +- else +- # We have old collect2 +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to +- # export. +- _LT_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty +- # executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- if test "$with_gnu_ld" = yes; then +- # We only use this code for GNU lds that support --whole-archive. +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- else +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared +- # libraries. +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- beos*) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- chorus*) +- case $cc_basename in +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- case $GXX,$cc_basename in +- ,cl* | no,cl*) +- # Native MSVC +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='@' +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; +- else +- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; +- fi~ +- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ +- linknames=' +- # The linker will not automatically build a static lib if we build a DLL. +- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- # Don't use ranlib +- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' +- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ +- lt_tool_outputfile="@TOOL_OUTPUT@"~ +- case $lt_outputfile in +- *.exe|*.EXE) ;; +- *) +- lt_outputfile="$lt_outputfile.exe" +- lt_tool_outputfile="$lt_tool_outputfile.exe" +- ;; +- esac~ +- func_to_tool_file "$lt_outputfile"~ +- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then +- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; +- $RM "$lt_outputfile.manifest"; +- fi' +- ;; +- *) +- # g++ +- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- +- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- darwin* | rhapsody*) +- _LT_DARWIN_LINKER_FEATURES($1) +- ;; +- +- dgux*) +- case $cc_basename in +- ec++*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- freebsd2.*) +- # C++ shared libraries reported to be fairly broken before +- # switch to ELF +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- freebsd-elf*) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- ;; +- +- freebsd* | dragonfly*) +- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF +- # conventions +- _LT_TAGVAR(ld_shlibs, $1)=yes +- ;; +- +- gnu*) +- ;; +- +- haiku*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- hpux9*) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- hpux10*|hpux11*) +- if test $with_gnu_ld = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- ;; +- *) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- esac +- fi +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; +- esac +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes; then +- if test $with_gnu_ld = no; then +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- fi +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- interix[[3-9]]*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- irix5* | irix6*) +- case $cc_basename in +- CC*) +- # SGI C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- +- # Archives containing C++ object files must be created using +- # "CC -ar", where "CC" is the IRIX C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' +- ;; +- *) +- if test "$GXX" = yes; then +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' +- fi +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- esac +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(inherit_rpath, $1)=yes +- ;; +- +- linux* | k*bsd*-gnu | kopensolaris*-gnu) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- ;; +- icpc* | ecpc* ) +- # Intel C++ +- with_gnu_ld=yes +- # version 8.0 and above of icpc choke on multiply defined symbols +- # if we add $predep_objects and $postdep_objects, however 7.1 and +- # earlier do not add the objects themselves. +- case `$CC -V 2>&1` in +- *"Version 7."*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- *) # Version 8.0 or newer +- tmp_idyn= +- case $host_cpu in +- ia64*) tmp_idyn=' -i_dynamic';; +- esac +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- esac +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- ;; +- pgCC* | pgcpp*) +- # Portland Group C++ compiler +- case `$CC -V` in +- *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) +- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ +- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' +- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ +- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ +- $RANLIB $oldlib' +- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- ;; +- *) # Version 6 and above use weak symbols +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- ;; +- cxx*) +- # Compaq C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' +- +- runpath_var=LD_RUN_PATH +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' +- ;; +- xl* | mpixl* | bgxl*) +- # IBM XL 8.0 on PPC, with GNU ld +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- +- # Not sure whether something based on +- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 +- # would be better. +- output_verbose_link_cmd='func_echo_all' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- esac +- ;; +- esac +- ;; +- +- lynxos*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- m88k*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- mvs*) +- case $cc_basename in +- cxx*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' +- wlarc= +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- fi +- # Workaround some broken pre-1.5 toolchains +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' +- ;; +- +- *nto* | *qnx*) +- _LT_TAGVAR(ld_shlibs, $1)=yes +- ;; +- +- openbsd2*) +- # C++ shared libraries are fairly broken +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- openbsd*) +- if test -f /usr/libexec/ld.so; then +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- fi +- output_verbose_link_cmd=func_echo_all +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # the KAI C++ compiler. +- case $host in +- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; +- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; +- esac +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- case $host in +- osf3*) +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- ;; +- *) +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ +- echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ +- $RM $lib.exp' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- case $host in +- osf3*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- psos*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- lcc*) +- # Lucid +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes +- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine and reorder linker options, +- # but understands `-z linker_flag'. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' +- ;; +- esac +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- +- output_verbose_link_cmd='func_echo_all' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- +- # The C++ compiler must be used to create the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' +- ;; +- *) +- # GNU C++ compiler with Solaris linker +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' +- if $CC --version | $GREP -v '^2\.7' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- else +- # g++ 2.7 appears to require `-G' NOT `-shared' on this +- # platform. +- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- fi +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +- ;; +- esac +- fi +- ;; +- esac +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ +- '"$_LT_TAGVAR(old_archive_cmds, $1)" +- _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ +- '"$_LT_TAGVAR(reload_cmds, $1)" +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- vxworks*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- +- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +- _LT_TAGVAR(GCC, $1)="$GXX" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_SYS_HIDDEN_LIBDEPS($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- CC=$lt_save_CC +- CFLAGS=$lt_save_CFLAGS +- LDCXX=$LD +- LD=$lt_save_LD +- GCC=$lt_save_GCC +- with_gnu_ld=$lt_save_with_gnu_ld +- lt_cv_path_LDCXX=$lt_cv_path_LD +- lt_cv_path_LD=$lt_save_path_LD +- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +-fi # test "$_lt_caught_CXX_error" != yes +- +-AC_LANG_POP +-])# _LT_LANG_CXX_CONFIG +- +- +-# _LT_FUNC_STRIPNAME_CNF +-# ---------------------- +-# func_stripname_cnf prefix suffix name +-# strip PREFIX and SUFFIX off of NAME. +-# PREFIX and SUFFIX must not contain globbing or regex special +-# characters, hashes, percent signs, but SUFFIX may contain a leading +-# dot (in which case that matches only a dot). +-# +-# This function is identical to the (non-XSI) version of func_stripname, +-# except this one can be used by m4 code that may be executed by configure, +-# rather than the libtool script. +-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +-AC_REQUIRE([_LT_DECL_SED]) +-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +-func_stripname_cnf () +-{ +- case ${2} in +- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; +- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; +- esac +-} # func_stripname_cnf +-])# _LT_FUNC_STRIPNAME_CNF +- +-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +-# --------------------------------- +-# Figure out "hidden" library dependencies from verbose +-# compiler output when linking a shared library. +-# Parse the compiler output and extract the necessary +-# objects, libraries and library flags. +-m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +-# Dependencies to place before and after the object being linked: +-_LT_TAGVAR(predep_objects, $1)= +-_LT_TAGVAR(postdep_objects, $1)= +-_LT_TAGVAR(predeps, $1)= +-_LT_TAGVAR(postdeps, $1)= +-_LT_TAGVAR(compiler_lib_search_path, $1)= +- +-dnl we can't use the lt_simple_compile_test_code here, +-dnl because it contains code intended for an executable, +-dnl not a library. It's possible we should let each +-dnl tag define a new lt_????_link_test_code variable, +-dnl but it's only used here... +-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +-int a; +-void foo (void) { a = 0; } +-_LT_EOF +-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +-class Foo +-{ +-public: +- Foo (void) { a = 0; } +-private: +- int a; +-}; +-_LT_EOF +-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF +- subroutine foo +- implicit none +- integer*4 a +- a=0 +- return +- end +-_LT_EOF +-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF +- subroutine foo +- implicit none +- integer a +- a=0 +- return +- end +-_LT_EOF +-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +-public class foo { +- private int a; +- public void bar (void) { +- a = 0; +- } +-}; +-_LT_EOF +-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +-package foo +-func foo() { +-} +-_LT_EOF +-]) +- +-_lt_libdeps_save_CFLAGS=$CFLAGS +-case "$CC $CFLAGS " in #( +-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +-esac +- +-dnl Parse the compiler output and extract the necessary +-dnl objects, libraries and library flags. +-if AC_TRY_EVAL(ac_compile); then +- # Parse the compiler output and extract the necessary +- # objects, libraries and library flags. +- +- # Sentinel used to keep track of whether or not we are before +- # the conftest object file. +- pre_test_object_deps_done=no +- +- for p in `eval "$output_verbose_link_cmd"`; do +- case ${prev}${p} in +- +- -L* | -R* | -l*) +- # Some compilers place space between "-{L,R}" and the path. +- # Remove the space. +- if test $p = "-L" || +- test $p = "-R"; then +- prev=$p +- continue +- fi +- +- # Expand the sysroot to ease extracting the directories later. +- if test -z "$prev"; then +- case $p in +- -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; +- -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; +- -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; +- esac +- fi +- case $p in +- =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; +- esac +- if test "$pre_test_object_deps_done" = no; then +- case ${prev} in +- -L | -R) +- # Internal compiler library paths should come after those +- # provided the user. The postdeps already come after the +- # user supplied libs so there is no need to process them. +- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then +- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" +- else +- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" +- fi +- ;; +- # The "-l" case would never come before the object being +- # linked, so don't bother handling this case. +- esac +- else +- if test -z "$_LT_TAGVAR(postdeps, $1)"; then +- _LT_TAGVAR(postdeps, $1)="${prev}${p}" +- else +- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" +- fi +- fi +- prev= +- ;; +- +- *.lto.$objext) ;; # Ignore GCC LTO objects +- *.$objext) +- # This assumes that the test object file only shows up +- # once in the compiler output. +- if test "$p" = "conftest.$objext"; then +- pre_test_object_deps_done=yes +- continue +- fi +- +- if test "$pre_test_object_deps_done" = no; then +- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then +- _LT_TAGVAR(predep_objects, $1)="$p" +- else +- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" +- fi +- else +- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then +- _LT_TAGVAR(postdep_objects, $1)="$p" +- else +- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" +- fi +- fi +- ;; +- +- *) ;; # Ignore the rest. +- +- esac +- done +- +- # Clean up. +- rm -f a.out a.exe +-else +- echo "libtool.m4: error: problem compiling $1 test program" +-fi +- +-$RM -f confest.$objext +-CFLAGS=$_lt_libdeps_save_CFLAGS +- +-# PORTME: override above test on systems where it is broken +-m4_if([$1], [CXX], +-[case $host_os in +-interix[[3-9]]*) +- # Interix 3.5 installs completely hosed .la files for C++, so rather than +- # hack all around it, let's just trust "g++" to DTRT. +- _LT_TAGVAR(predep_objects,$1)= +- _LT_TAGVAR(postdep_objects,$1)= +- _LT_TAGVAR(postdeps,$1)= +- ;; +- +-linux*) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- +- # The more standards-conforming stlport4 library is +- # incompatible with the Cstd library. Avoid specifying +- # it if it's in CXXFLAGS. Ignore libCrun as +- # -library=stlport4 depends on it. +- case " $CXX $CXXFLAGS " in +- *" -library=stlport4 "*) +- solaris_use_stlport4=yes +- ;; +- esac +- +- if test "$solaris_use_stlport4" != yes; then +- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' +- fi +- ;; +- esac +- ;; +- +-solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # The more standards-conforming stlport4 library is +- # incompatible with the Cstd library. Avoid specifying +- # it if it's in CXXFLAGS. Ignore libCrun as +- # -library=stlport4 depends on it. +- case " $CXX $CXXFLAGS " in +- *" -library=stlport4 "*) +- solaris_use_stlport4=yes +- ;; +- esac +- +- # Adding this requires a known-good setup of shared libraries for +- # Sun compiler versions before 5.6, else PIC objects from an old +- # archive will be linked into the output, leading to subtle bugs. +- if test "$solaris_use_stlport4" != yes; then +- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' +- fi +- ;; +- esac +- ;; +-esac +-]) +- +-case " $_LT_TAGVAR(postdeps, $1) " in +-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +-esac +- _LT_TAGVAR(compiler_lib_search_dirs, $1)= +-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then +- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +-fi +-_LT_TAGDECL([], [compiler_lib_search_dirs], [1], +- [The directories searched by this compiler when creating a shared library]) +-_LT_TAGDECL([], [predep_objects], [1], +- [Dependencies to place before and after the objects being linked to +- create a shared library]) +-_LT_TAGDECL([], [postdep_objects], [1]) +-_LT_TAGDECL([], [predeps], [1]) +-_LT_TAGDECL([], [postdeps], [1]) +-_LT_TAGDECL([], [compiler_lib_search_path], [1], +- [The library search path used internally by the compiler when linking +- a shared library]) +-])# _LT_SYS_HIDDEN_LIBDEPS +- +- +-# _LT_LANG_F77_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for a Fortran 77 compiler are +-# suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_F77_CONFIG], +-[AC_LANG_PUSH(Fortran 77) +-if test -z "$F77" || test "X$F77" = "Xno"; then +- _lt_disable_F77=yes +-fi +- +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for f77 test sources. +-ac_ext=f +- +-# Object file extension for compiled f77 test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the F77 compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_disable_F77" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="\ +- subroutine t +- return +- end +-" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code="\ +- program t +- end +-" +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC="$CC" +- lt_save_GCC=$GCC +- lt_save_CFLAGS=$CFLAGS +- CC=${F77-"f77"} +- CFLAGS=$FFLAGS +- compiler=$CC +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- GCC=$G77 +- if test -n "$compiler"; then +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_TAGVAR(GCC, $1)="$G77" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- GCC=$lt_save_GCC +- CC="$lt_save_CC" +- CFLAGS="$lt_save_CFLAGS" +-fi # test "$_lt_disable_F77" != yes +- +-AC_LANG_POP +-])# _LT_LANG_F77_CONFIG +- +- +-# _LT_LANG_FC_CONFIG([TAG]) +-# ------------------------- +-# Ensure that the configuration variables for a Fortran compiler are +-# suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_FC_CONFIG], +-[AC_LANG_PUSH(Fortran) +- +-if test -z "$FC" || test "X$FC" = "Xno"; then +- _lt_disable_FC=yes +-fi +- +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for fc test sources. +-ac_ext=${ac_fc_srcext-f} +- +-# Object file extension for compiled fc test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the FC compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_disable_FC" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="\ +- subroutine t +- return +- end +-" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code="\ +- program t +- end +-" +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC="$CC" +- lt_save_GCC=$GCC +- lt_save_CFLAGS=$CFLAGS +- CC=${FC-"f95"} +- CFLAGS=$FCFLAGS +- compiler=$CC +- GCC=$ac_cv_fc_compiler_gnu +- +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- +- if test -n "$compiler"; then +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_SYS_HIDDEN_LIBDEPS($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- GCC=$lt_save_GCC +- CC=$lt_save_CC +- CFLAGS=$lt_save_CFLAGS +-fi # test "$_lt_disable_FC" != yes +- +-AC_LANG_POP +-])# _LT_LANG_FC_CONFIG +- +- +-# _LT_LANG_GCJ_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for the GNU Java Compiler compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_GCJ_CONFIG], +-[AC_REQUIRE([LT_PROG_GCJ])dnl +-AC_LANG_SAVE +- +-# Source file extension for Java test sources. +-ac_ext=java +- +-# Object file extension for compiled Java test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="class foo {}" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC=yes +-CC=${GCJ-"gcj"} +-CFLAGS=$GCJFLAGS +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_TAGVAR(LD, $1)="$LD" +-_LT_CC_BASENAME([$compiler]) +- +-# GCJ did not exist at the time GCC didn't implicitly link libc in. +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +-fi +- +-AC_LANG_RESTORE +- +-GCC=$lt_save_GCC +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_GCJ_CONFIG +- +- +-# _LT_LANG_GO_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for the GNU Go compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_GO_CONFIG], +-[AC_REQUIRE([LT_PROG_GO])dnl +-AC_LANG_SAVE +- +-# Source file extension for Go test sources. +-ac_ext=go +- +-# Object file extension for compiled Go test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="package main; func main() { }" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='package main; func main() { }' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC=yes +-CC=${GOC-"gccgo"} +-CFLAGS=$GOFLAGS +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_TAGVAR(LD, $1)="$LD" +-_LT_CC_BASENAME([$compiler]) +- +-# Go did not exist at the time GCC didn't implicitly link libc in. +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +-fi +- +-AC_LANG_RESTORE +- +-GCC=$lt_save_GCC +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_GO_CONFIG +- +- +-# _LT_LANG_RC_CONFIG([TAG]) +-# ------------------------- +-# Ensure that the configuration variables for the Windows resource compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_RC_CONFIG], +-[AC_REQUIRE([LT_PROG_RC])dnl +-AC_LANG_SAVE +- +-# Source file extension for RC test sources. +-ac_ext=rc +- +-# Object file extension for compiled RC test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' +- +-# Code to be used in simple link tests +-lt_simple_link_test_code="$lt_simple_compile_test_code" +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC="$CC" +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC= +-CC=${RC-"windres"} +-CFLAGS= +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_CC_BASENAME([$compiler]) +-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- +-if test -n "$compiler"; then +- : +- _LT_CONFIG($1) +-fi +- +-GCC=$lt_save_GCC +-AC_LANG_RESTORE +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_RC_CONFIG +- +- +-# LT_PROG_GCJ +-# ----------- +-AC_DEFUN([LT_PROG_GCJ], +-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], +- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], +- [AC_CHECK_TOOL(GCJ, gcj,) +- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" +- AC_SUBST(GCJFLAGS)])])[]dnl +-]) +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +- +- +-# LT_PROG_GO +-# ---------- +-AC_DEFUN([LT_PROG_GO], +-[AC_CHECK_TOOL(GOC, gccgo,) +-]) +- +- +-# LT_PROG_RC +-# ---------- +-AC_DEFUN([LT_PROG_RC], +-[AC_CHECK_TOOL(RC, windres,) +-]) +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_RC], []) +- +- +-# _LT_DECL_EGREP +-# -------------- +-# If we don't have a new enough Autoconf to choose the best grep +-# available, choose the one first in the user's PATH. +-m4_defun([_LT_DECL_EGREP], +-[AC_REQUIRE([AC_PROG_EGREP])dnl +-AC_REQUIRE([AC_PROG_FGREP])dnl +-test -z "$GREP" && GREP=grep +-_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +-_LT_DECL([], [EGREP], [1], [An ERE matcher]) +-_LT_DECL([], [FGREP], [1], [A literal string matcher]) +-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +-AC_SUBST([GREP]) +-]) +- +- +-# _LT_DECL_OBJDUMP +-# -------------- +-# If we don't have a new enough Autoconf to choose the best objdump +-# available, choose the one first in the user's PATH. +-m4_defun([_LT_DECL_OBJDUMP], +-[AC_CHECK_TOOL(OBJDUMP, objdump, false) +-test -z "$OBJDUMP" && OBJDUMP=objdump +-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +-AC_SUBST([OBJDUMP]) +-]) +- +-# _LT_DECL_DLLTOOL +-# ---------------- +-# Ensure DLLTOOL variable is set. +-m4_defun([_LT_DECL_DLLTOOL], +-[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +-AC_SUBST([DLLTOOL]) +-]) +- +-# _LT_DECL_SED +-# ------------ +-# Check for a fully-functional sed program, that truncates +-# as few characters as possible. Prefer GNU sed if found. +-m4_defun([_LT_DECL_SED], +-[AC_PROG_SED +-test -z "$SED" && SED=sed +-Xsed="$SED -e 1s/^X//" +-_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], +- [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +-])# _LT_DECL_SED +- +-m4_ifndef([AC_PROG_SED], [ +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_SED. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +- +-m4_defun([AC_PROG_SED], +-[AC_MSG_CHECKING([for a sed that does not truncate output]) +-AC_CACHE_VAL(lt_cv_path_SED, +-[# Loop through the user's path and test for sed and gsed. +-# Then use that list of sed's as ones to test for truncation. +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for lt_ac_prog in sed gsed; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then +- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" +- fi +- done +- done +-done +-IFS=$as_save_IFS +-lt_ac_max=0 +-lt_ac_count=0 +-# Add /usr/xpg4/bin/sed as it is typically found on Solaris +-# along with /bin/sed that truncates output. +-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do +- test ! -f $lt_ac_sed && continue +- cat /dev/null > conftest.in +- lt_ac_count=0 +- echo $ECHO_N "0123456789$ECHO_C" >conftest.in +- # Check for GNU sed and select it if it is found. +- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then +- lt_cv_path_SED=$lt_ac_sed +- break +- fi +- while true; do +- cat conftest.in conftest.in >conftest.tmp +- mv conftest.tmp conftest.in +- cp conftest.in conftest.nl +- echo >>conftest.nl +- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break +- cmp -s conftest.out conftest.nl || break +- # 10000 chars as input seems more than enough +- test $lt_ac_count -gt 10 && break +- lt_ac_count=`expr $lt_ac_count + 1` +- if test $lt_ac_count -gt $lt_ac_max; then +- lt_ac_max=$lt_ac_count +- lt_cv_path_SED=$lt_ac_sed +- fi +- done +-done +-]) +-SED=$lt_cv_path_SED +-AC_SUBST([SED]) +-AC_MSG_RESULT([$SED]) +-])#AC_PROG_SED +-])#m4_ifndef +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_SED], []) +- +- +-# _LT_CHECK_SHELL_FEATURES +-# ------------------------ +-# Find out whether the shell is Bourne or XSI compatible, +-# or has some other useful features. +-m4_defun([_LT_CHECK_SHELL_FEATURES], +-[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +-# Try some XSI features +-xsi_shell=no +-( _lt_dummy="a/b/c" +- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ +- = c,a/b,b/c, \ +- && eval 'test $(( 1 + 1 )) -eq 2 \ +- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ +- && xsi_shell=yes +-AC_MSG_RESULT([$xsi_shell]) +-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) +- +-AC_MSG_CHECKING([whether the shell understands "+="]) +-lt_shell_append=no +-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ +- >/dev/null 2>&1 \ +- && lt_shell_append=yes +-AC_MSG_RESULT([$lt_shell_append]) +-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) +- +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- lt_unset=unset +-else +- lt_unset=false +-fi +-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl +- +-# test EBCDIC or ASCII +-case `echo X|tr X '\101'` in +- A) # ASCII based system +- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr +- lt_SP2NL='tr \040 \012' +- lt_NL2SP='tr \015\012 \040\040' +- ;; +- *) # EBCDIC based system +- lt_SP2NL='tr \100 \n' +- lt_NL2SP='tr \r\n \100\100' +- ;; +-esac +-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +-])# _LT_CHECK_SHELL_FEATURES +- +- +-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +-# ------------------------------------------------------ +-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +-m4_defun([_LT_PROG_FUNCTION_REPLACE], +-[dnl { +-sed -e '/^$1 ()$/,/^} # $1 /c\ +-$1 ()\ +-{\ +-m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +-test 0 -eq $? || _lt_function_replace_fail=: +-]) +- +- +-# _LT_PROG_REPLACE_SHELLFNS +-# ------------------------- +-# Replace existing portable implementations of several shell functions with +-# equivalent extended shell implementations where those features are available.. +-m4_defun([_LT_PROG_REPLACE_SHELLFNS], +-[if test x"$xsi_shell" = xyes; then +- _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl +- case ${1} in +- */*) func_dirname_result="${1%/*}${2}" ;; +- * ) func_dirname_result="${3}" ;; +- esac]) +- +- _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl +- func_basename_result="${1##*/}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl +- case ${1} in +- */*) func_dirname_result="${1%/*}${2}" ;; +- * ) func_dirname_result="${3}" ;; +- esac +- func_basename_result="${1##*/}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl +- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are +- # positional parameters, so assign one to ordinary parameter first. +- func_stripname_result=${3} +- func_stripname_result=${func_stripname_result#"${1}"} +- func_stripname_result=${func_stripname_result%"${2}"}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl +- func_split_long_opt_name=${1%%=*} +- func_split_long_opt_arg=${1#*=}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl +- func_split_short_opt_arg=${1#??} +- func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl +- case ${1} in +- *.lo) func_lo2o_result=${1%.lo}.${objext} ;; +- *) func_lo2o_result=${1} ;; +- esac]) +- +- _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) +- +- _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) +- +- _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +-fi +- +-if test x"$lt_shell_append" = xyes; then +- _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl +- func_quote_for_eval "${2}" +-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ +- eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) +- +- # Save a `func_append' function call where possible by direct use of '+=' +- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +- test 0 -eq $? || _lt_function_replace_fail=: +-else +- # Save a `func_append' function call even when '+=' is not available +- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +- test 0 -eq $? || _lt_function_replace_fail=: +-fi +- +-if test x"$_lt_function_replace_fail" = x":"; then +- AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +-fi +-]) +- +-# _LT_PATH_CONVERSION_FUNCTIONS +-# ----------------------------- +-# Determine which file name conversion functions should be used by +-# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +-# for certain cross-compile configurations and native mingw. +-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_MSG_CHECKING([how to convert $build file names to $host format]) +-AC_CACHE_VAL(lt_cv_to_host_file_cmd, +-[case $host in +- *-*-mingw* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 +- ;; +- *-*-cygwin* ) +- lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 +- ;; +- * ) # otherwise, assume *nix +- lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 +- ;; +- esac +- ;; +- *-*-cygwin* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin +- ;; +- *-*-cygwin* ) +- lt_cv_to_host_file_cmd=func_convert_file_noop +- ;; +- * ) # otherwise, assume *nix +- lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin +- ;; +- esac +- ;; +- * ) # unhandled hosts (and "normal" native builds) +- lt_cv_to_host_file_cmd=func_convert_file_noop +- ;; +-esac +-]) +-to_host_file_cmd=$lt_cv_to_host_file_cmd +-AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], +- [0], [convert $build file names to $host format])dnl +- +-AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +-AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +-[#assume ordinary cross tools, or native build. +-lt_cv_to_tool_file_cmd=func_convert_file_noop +-case $host in +- *-*-mingw* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 +- ;; +- esac +- ;; +-esac +-]) +-to_tool_file_cmd=$lt_cv_to_tool_file_cmd +-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], +- [0], [convert $build files to toolchain format])dnl +-])# _LT_PATH_CONVERSION_FUNCTIONS +diff --git a/m4/macros/ltoptions.m4 b/m4/macros/ltoptions.m4 +deleted file mode 100644 +index 5d9acd8..0000000 +--- a/m4/macros/ltoptions.m4 ++++ /dev/null +@@ -1,384 +0,0 @@ +-# Helper functions for option handling. -*- Autoconf -*- +-# +-# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +-# Inc. +-# Written by Gary V. Vaughan, 2004 +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-# serial 7 ltoptions.m4 +- +-# This is to help aclocal find these macros, as it can't see m4_define. +-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) +- +- +-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +-# ------------------------------------------ +-m4_define([_LT_MANGLE_OPTION], +-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) +- +- +-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +-# --------------------------------------- +-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +-# matching handler defined, dispatch to it. Other OPTION-NAMEs are +-# saved as a flag. +-m4_define([_LT_SET_OPTION], +-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), +- _LT_MANGLE_DEFUN([$1], [$2]), +- [m4_warning([Unknown $1 option `$2'])])[]dnl +-]) +- +- +-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +-# ------------------------------------------------------------ +-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +-m4_define([_LT_IF_OPTION], +-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) +- +- +-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +-# ------------------------------------------------------- +-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +-# are set. +-m4_define([_LT_UNLESS_OPTIONS], +-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), +- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), +- [m4_define([$0_found])])])[]dnl +-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +-])[]dnl +-]) +- +- +-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +-# ---------------------------------------- +-# OPTION-LIST is a space-separated list of Libtool options associated +-# with MACRO-NAME. If any OPTION has a matching handler declared with +-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +-# the unknown option and exit. +-m4_defun([_LT_SET_OPTIONS], +-[# Set options +-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), +- [_LT_SET_OPTION([$1], _LT_Option)]) +- +-m4_if([$1],[LT_INIT],[ +- dnl +- dnl Simply set some default values (i.e off) if boolean options were not +- dnl specified: +- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no +- ]) +- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no +- ]) +- dnl +- dnl If no reference was made to various pairs of opposing options, then +- dnl we run the default mode handler for the pair. For example, if neither +- dnl `shared' nor `disable-shared' was passed, we enable building of shared +- dnl archives by default: +- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) +- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) +- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) +- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], +- [_LT_ENABLE_FAST_INSTALL]) +- ]) +-])# _LT_SET_OPTIONS +- +- +-## --------------------------------- ## +-## Macros to handle LT_INIT options. ## +-## --------------------------------- ## +- +-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +-# ----------------------------------------- +-m4_define([_LT_MANGLE_DEFUN], +-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) +- +- +-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +-# ----------------------------------------------- +-m4_define([LT_OPTION_DEFINE], +-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +-])# LT_OPTION_DEFINE +- +- +-# dlopen +-# ------ +-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +-]) +- +-AU_DEFUN([AC_LIBTOOL_DLOPEN], +-[_LT_SET_OPTION([LT_INIT], [dlopen]) +-AC_DIAGNOSE([obsolete], +-[$0: Remove this warning and the call to _LT_SET_OPTION when you +-put the `dlopen' option into LT_INIT's first parameter.]) +-]) +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) +- +- +-# win32-dll +-# --------- +-# Declare package support for building win32 dll's. +-LT_OPTION_DEFINE([LT_INIT], [win32-dll], +-[enable_win32_dll=yes +- +-case $host in +-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) +- AC_CHECK_TOOL(AS, as, false) +- AC_CHECK_TOOL(DLLTOOL, dlltool, false) +- AC_CHECK_TOOL(OBJDUMP, objdump, false) +- ;; +-esac +- +-test -z "$AS" && AS=as +-_LT_DECL([], [AS], [1], [Assembler program])dnl +- +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl +- +-test -z "$OBJDUMP" && OBJDUMP=objdump +-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +-])# win32-dll +- +-AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-_LT_SET_OPTION([LT_INIT], [win32-dll]) +-AC_DIAGNOSE([obsolete], +-[$0: Remove this warning and the call to _LT_SET_OPTION when you +-put the `win32-dll' option into LT_INIT's first parameter.]) +-]) +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) +- +- +-# _LT_ENABLE_SHARED([DEFAULT]) +-# ---------------------------- +-# implement the --enable-shared flag, and supports the `shared' and +-# `disable-shared' LT_INIT options. +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-m4_define([_LT_ENABLE_SHARED], +-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +-AC_ARG_ENABLE([shared], +- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], +- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_shared=yes ;; +- no) enable_shared=no ;; +- *) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) +- +- _LT_DECL([build_libtool_libs], [enable_shared], [0], +- [Whether or not to build shared libraries]) +-])# _LT_ENABLE_SHARED +- +-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) +- +-# Old names: +-AC_DEFUN([AC_ENABLE_SHARED], +-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +-]) +- +-AC_DEFUN([AC_DISABLE_SHARED], +-[_LT_SET_OPTION([LT_INIT], [disable-shared]) +-]) +- +-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AM_ENABLE_SHARED], []) +-dnl AC_DEFUN([AM_DISABLE_SHARED], []) +- +- +- +-# _LT_ENABLE_STATIC([DEFAULT]) +-# ---------------------------- +-# implement the --enable-static flag, and support the `static' and +-# `disable-static' LT_INIT options. +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-m4_define([_LT_ENABLE_STATIC], +-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +-AC_ARG_ENABLE([static], +- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], +- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_static=yes ;; +- no) enable_static=no ;; +- *) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_static=]_LT_ENABLE_STATIC_DEFAULT) +- +- _LT_DECL([build_old_libs], [enable_static], [0], +- [Whether or not to build static libraries]) +-])# _LT_ENABLE_STATIC +- +-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) +- +-# Old names: +-AC_DEFUN([AC_ENABLE_STATIC], +-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +-]) +- +-AC_DEFUN([AC_DISABLE_STATIC], +-[_LT_SET_OPTION([LT_INIT], [disable-static]) +-]) +- +-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AM_ENABLE_STATIC], []) +-dnl AC_DEFUN([AM_DISABLE_STATIC], []) +- +- +- +-# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +-# ---------------------------------- +-# implement the --enable-fast-install flag, and support the `fast-install' +-# and `disable-fast-install' LT_INIT options. +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-m4_define([_LT_ENABLE_FAST_INSTALL], +-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +-AC_ARG_ENABLE([fast-install], +- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], +- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_fast_install=yes ;; +- no) enable_fast_install=no ;; +- *) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) +- +-_LT_DECL([fast_install], [enable_fast_install], [0], +- [Whether or not to optimize for fast installation])dnl +-])# _LT_ENABLE_FAST_INSTALL +- +-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) +- +-# Old names: +-AU_DEFUN([AC_ENABLE_FAST_INSTALL], +-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +-AC_DIAGNOSE([obsolete], +-[$0: Remove this warning and the call to _LT_SET_OPTION when you put +-the `fast-install' option into LT_INIT's first parameter.]) +-]) +- +-AU_DEFUN([AC_DISABLE_FAST_INSTALL], +-[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +-AC_DIAGNOSE([obsolete], +-[$0: Remove this warning and the call to _LT_SET_OPTION when you put +-the `disable-fast-install' option into LT_INIT's first parameter.]) +-]) +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) +- +- +-# _LT_WITH_PIC([MODE]) +-# -------------------- +-# implement the --with-pic flag, and support the `pic-only' and `no-pic' +-# LT_INIT options. +-# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +-m4_define([_LT_WITH_PIC], +-[AC_ARG_WITH([pic], +- [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], +- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], +- [lt_p=${PACKAGE-default} +- case $withval in +- yes|no) pic_mode=$withval ;; +- *) +- pic_mode=default +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for lt_pkg in $withval; do +- IFS="$lt_save_ifs" +- if test "X$lt_pkg" = "X$lt_p"; then +- pic_mode=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [pic_mode=default]) +- +-test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) +- +-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +-])# _LT_WITH_PIC +- +-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) +- +-# Old name: +-AU_DEFUN([AC_LIBTOOL_PICMODE], +-[_LT_SET_OPTION([LT_INIT], [pic-only]) +-AC_DIAGNOSE([obsolete], +-[$0: Remove this warning and the call to _LT_SET_OPTION when you +-put the `pic-only' option into LT_INIT's first parameter.]) +-]) +- +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) +- +-## ----------------- ## +-## LTDL_INIT Options ## +-## ----------------- ## +- +-m4_define([_LTDL_MODE], []) +-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], +- [m4_define([_LTDL_MODE], [nonrecursive])]) +-LT_OPTION_DEFINE([LTDL_INIT], [recursive], +- [m4_define([_LTDL_MODE], [recursive])]) +-LT_OPTION_DEFINE([LTDL_INIT], [subproject], +- [m4_define([_LTDL_MODE], [subproject])]) +- +-m4_define([_LTDL_TYPE], []) +-LT_OPTION_DEFINE([LTDL_INIT], [installable], +- [m4_define([_LTDL_TYPE], [installable])]) +-LT_OPTION_DEFINE([LTDL_INIT], [convenience], +- [m4_define([_LTDL_TYPE], [convenience])]) +diff --git a/m4/macros/ltsugar.m4 b/m4/macros/ltsugar.m4 +deleted file mode 100644 +index 9000a05..0000000 +--- a/m4/macros/ltsugar.m4 ++++ /dev/null +@@ -1,123 +0,0 @@ +-# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +-# +-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +-# Written by Gary V. Vaughan, 2004 +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-# serial 6 ltsugar.m4 +- +-# This is to help aclocal find these macros, as it can't see m4_define. +-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) +- +- +-# lt_join(SEP, ARG1, [ARG2...]) +-# ----------------------------- +-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +-# associated separator. +-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +-# versions in m4sugar had bugs. +-m4_define([lt_join], +-[m4_if([$#], [1], [], +- [$#], [2], [[$2]], +- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +-m4_define([_lt_join], +-[m4_if([$#$2], [2], [], +- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) +- +- +-# lt_car(LIST) +-# lt_cdr(LIST) +-# ------------ +-# Manipulate m4 lists. +-# These macros are necessary as long as will still need to support +-# Autoconf-2.59 which quotes differently. +-m4_define([lt_car], [[$1]]) +-m4_define([lt_cdr], +-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], +- [$#], 1, [], +- [m4_dquote(m4_shift($@))])]) +-m4_define([lt_unquote], $1) +- +- +-# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +-# ------------------------------------------ +-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +-# Note that neither SEPARATOR nor STRING are expanded; they are appended +-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +-# No SEPARATOR is output if MACRO-NAME was previously undefined (different +-# than defined and empty). +-# +-# This macro is needed until we can rely on Autoconf 2.62, since earlier +-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +-m4_define([lt_append], +-[m4_define([$1], +- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) +- +- +- +-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +-# ---------------------------------------------------------- +-# Produce a SEP delimited list of all paired combinations of elements of +-# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +-# has the form PREFIXmINFIXSUFFIXn. +-# Needed until we can rely on m4_combine added in Autoconf 2.62. +-m4_define([lt_combine], +-[m4_if(m4_eval([$# > 3]), [1], +- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +-[[m4_foreach([_Lt_prefix], [$2], +- [m4_foreach([_Lt_suffix], +- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, +- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) +- +- +-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +-# ----------------------------------------------------------------------- +-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +-m4_define([lt_if_append_uniq], +-[m4_ifdef([$1], +- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], +- [lt_append([$1], [$2], [$3])$4], +- [$5])], +- [lt_append([$1], [$2], [$3])$4])]) +- +- +-# lt_dict_add(DICT, KEY, VALUE) +-# ----------------------------- +-m4_define([lt_dict_add], +-[m4_define([$1($2)], [$3])]) +- +- +-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +-# -------------------------------------------- +-m4_define([lt_dict_add_subkey], +-[m4_define([$1($2:$3)], [$4])]) +- +- +-# lt_dict_fetch(DICT, KEY, [SUBKEY]) +-# ---------------------------------- +-m4_define([lt_dict_fetch], +-[m4_ifval([$3], +- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), +- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) +- +- +-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +-# ----------------------------------------------------------------- +-m4_define([lt_if_dict_fetch], +-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], +- [$5], +- [$6])]) +- +- +-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +-# -------------------------------------------------------------- +-m4_define([lt_dict_filter], +-[m4_if([$5], [], [], +- [lt_join(m4_quote(m4_default([$4], [[, ]])), +- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), +- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +-]) +diff --git a/m4/macros/ltversion.m4 b/m4/macros/ltversion.m4 +deleted file mode 100644 +index 07a8602..0000000 +--- a/m4/macros/ltversion.m4 ++++ /dev/null +@@ -1,23 +0,0 @@ +-# ltversion.m4 -- version numbers -*- Autoconf -*- +-# +-# Copyright (C) 2004 Free Software Foundation, Inc. +-# Written by Scott James Remnant, 2004 +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-# @configure_input@ +- +-# serial 3337 ltversion.m4 +-# This file is part of GNU Libtool +- +-m4_define([LT_PACKAGE_VERSION], [2.4.2]) +-m4_define([LT_PACKAGE_REVISION], [1.3337]) +- +-AC_DEFUN([LTVERSION_VERSION], +-[macro_version='2.4.2' +-macro_revision='1.3337' +-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +-_LT_DECL(, macro_revision, 0) +-]) +diff --git a/m4/macros/lt~obsolete.m4 b/m4/macros/lt~obsolete.m4 +deleted file mode 100644 +index c573da9..0000000 +--- a/m4/macros/lt~obsolete.m4 ++++ /dev/null +@@ -1,98 +0,0 @@ +-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +-# +-# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +-# Written by Scott James Remnant, 2004. +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-# serial 5 lt~obsolete.m4 +- +-# These exist entirely to fool aclocal when bootstrapping libtool. +-# +-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +-# which have later been changed to m4_define as they aren't part of the +-# exported API, or moved to Autoconf or Automake where they belong. +-# +-# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +-# using a macro with the same name in our local m4/libtool.m4 it'll +-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +-# and doesn't know about Autoconf macros at all.) +-# +-# So we provide this file, which has a silly filename so it's always +-# included after everything else. This provides aclocal with the +-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +-# because those macros already exist, or will be overwritten later. +-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +-# +-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +-# Yes, that means every name once taken will need to remain here until +-# we give up compatibility with versions before 1.7, at which point +-# we need to keep only those names which we still refer to. +- +-# This is to help aclocal find these macros, as it can't see m4_define. +-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +- +-m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +-m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +-m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +-m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +-m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +-m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +-m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +-m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +-m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +-m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +-m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +-m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +-m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +-m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +-m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +-m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +-m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +-m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +-m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +-m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +-m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +-m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +-m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +-m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +-m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +-m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +-m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +-m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +-m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +-m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +-m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +-m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +-m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +-m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +-m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +-m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +-m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +-m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/am-utils.spec b/am-utils.spec index b9420d7..744b953 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -5,7 +5,7 @@ Version: 6.2.0 %define shorthash %(echo "%{githash}" | cut -c -8) %define gitdate 20140906 %define revision 1 -Release: %{revision}.%{gitdate}git%{shorthash}%{?dist} +Release: 2.%{gitdate}git%{shorthash}%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -46,6 +46,9 @@ Requires(preun): /sbin/install-info # automake ylwrap has changed, fix inline patch in bootstrap. Patch1: am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch +# Fix problems with possible future libtool rebases (#1181698) +Patch2: am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -70,13 +73,15 @@ mounting and unmounting filesystems. %setup -q -n %{name}-%{version}-%{revision}.git.%{shorthash} %patch1 -p1 +%patch2 -p1 + +./bootstrap find_requires=%{old_find_requires} echo "$find_requires | grep -v lostaltmail.conf" > find-requires chmod +x find-requires %build -./bootstrap %configure \ --enable-shared \ --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ From 9c28b82964ef360954409ee36529026633c81e2c Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 16 Jan 2015 11:27:21 +0800 Subject: [PATCH 081/157] - update changelog for bug 1181698. --- am-utils.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/am-utils.spec b/am-utils.spec index 744b953..82aee79 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -184,6 +184,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-2.20140906gitbb13dea6 +- fix libtool-2.4.4 build failure, bug 1181698. + * Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 - add perl-Unicode-EastAsianWidth to BuildRequires. From 48bebf3abb063e0adbaf61c3755d75b9b32236f6 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 12 Jun 2015 10:32:28 +0800 Subject: [PATCH 082/157] - add build requires for gcc and m4. --- am-utils.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 82aee79..0a2adb9 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -5,7 +5,7 @@ Version: 6.2.0 %define shorthash %(echo "%{githash}" | cut -c -8) %define gitdate 20140906 %define revision 1 -Release: 2.%{gitdate}git%{shorthash}%{?dist} +Release: 3.%{gitdate}git%{shorthash}%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -29,6 +29,8 @@ BuildRequires: tcp_wrappers-devel BuildRequires: systemd-units BuildRequires: texinfo BuildRequires: perl-Unicode-EastAsianWidth +BuildRequires: gcc +BuildRequires: m4 Requires: portmap Requires: grep @@ -184,6 +186,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Jun 12 2015 Ian Kent - 5:6.2.0-3.20140906gitbb13dea6 +- add build requires for gcc and m4. + * Tue Oct 21 2014 Ian Kent - 5:6.2.0-2.20140906gitbb13dea6 - fix libtool-2.4.4 build failure, bug 1181698. From 634a5ca07bd46de6d73224da6e8de99e8e39b37f Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Tue, 16 Jun 2015 23:50:07 +0000 Subject: [PATCH 083/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 0a2adb9..54dceab 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -5,7 +5,7 @@ Version: 6.2.0 %define shorthash %(echo "%{githash}" | cut -c -8) %define gitdate 20140906 %define revision 1 -Release: 3.%{gitdate}git%{shorthash}%{?dist} +Release: 4.%{gitdate}git%{shorthash}%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -186,6 +186,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Jun 16 2015 Fedora Release Engineering - 5:6.2.0-4.20140906gitbb13dea6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + * Fri Jun 12 2015 Ian Kent - 5:6.2.0-3.20140906gitbb13dea6 - add build requires for gcc and m4. From 288b05ec10f2df5db64cdda2a8280ff847fad324 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Wed, 30 Dec 2015 16:56:36 +0800 Subject: [PATCH 084/157] - update to official version 6.2 source plus add bug fixes for the internal NFSv3 server. --- .gitignore | 1 + ...debug-log-trace-to-NFSv3-readdirplus.patch | 25 + ...uto-generated-macros-in-aclinlude_m4.patch | 805 ++---------------- ...d-return-on-non-existent-mount-point.patch | 32 + ...v3-lookup-dir-attribute-return-value.patch | 76 ++ ...eaddir-post_op_dir-attributes-return.patch | 53 ++ ..._or_rmdir3-post_op-attributes-return.patch | 62 ++ am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch | 36 - am-utils.spec | 45 +- sources | 2 +- 10 files changed, 365 insertions(+), 772 deletions(-) create mode 100644 am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch rename am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch => am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch (91%) create mode 100644 am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch create mode 100644 am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch create mode 100644 am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch create mode 100644 am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch delete mode 100644 am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch diff --git a/.gitignore b/.gitignore index 9ee960c..6d683a2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ am-utils-6.1.5.tar.gz *.log *.rpm /am-utils-6.2.0-1.git.bb13dea6.tar.gz +/am-utils-6.2.tar.gz diff --git a/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch b/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch new file mode 100644 index 0000000..41e23e3 --- /dev/null +++ b/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch @@ -0,0 +1,25 @@ +am-utils-6.2 - add debug log trace to NFSv3 readdirplus + +From: Ian Kent + +Add log trace print to NFSv3 readdirplus for debuging purposes. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 30effba..ef07a4a 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1642,6 +1642,9 @@ am_nfs3_readdirplus_3_svc(am_READDIRPLUS3args *argp, struct svc_req *rqstp) + am_node *mp; + int retry; + ++ if (amuDebug(D_TRACE)) ++ plog(XLOG_DEBUG, "readdirplus_3:"); ++ + mp = fh3_to_mp3(dir, &retry, VLOOK_CREATE); + if (mp == NULL) { + if (retry < 0) { diff --git a/am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch b/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch similarity index 91% rename from am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch rename to am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch index 1c68146..fef63f9 100644 --- a/am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch +++ b/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch @@ -1,35 +1,33 @@ -am-utils-6.2.0-1.git.bb13dea6 - dont include auto generated macros in aclinluder.m4 +Move libtool macro functions from m4/macros to m4 and delete -From: Ian Kent +From: Christos Zoulas -am-utils-6.2 - dont include auto generated macros in aclinlude.m4 - -libtool-2.4.4 causes the am-utils build to not produce a working install. - -To fix this (for future libtool rebases) put system macros into -$(top_srcdir)/m4 and maintainer-defined macros into $(top_srcdir)/m4/macros. - -Then, bootstrap script generates acinclude.m4 only from maintainer-defined -macros. - -Signed-off-by: Ian Kent +the repository copies. Makes am-utils work with libtool-2.4.4 +and fixes the serial number warnings (raven at themaw.net) --- - Makefile.am | 2 - configure.ac | 2 - m4/macros/libtool.m4 | 7982 ---------------------------------------------- - m4/macros/ltoptions.m4 | 384 -- - m4/macros/ltsugar.m4 | 123 - - m4/macros/ltversion.m4 | 23 - m4/macros/lt~obsolete.m4 | 98 - - 7 files changed, 2 insertions(+), 8612 deletions(-) + ChangeLog | 6 + Makefile.am | 2 + configure.ac | 2 + m4/macros/libtool.m4 | 7997 -------------------------------------------------- + 4 files changed, 8 insertions(+), 7999 deletions(-) delete mode 100644 m4/macros/libtool.m4 - delete mode 100644 m4/macros/ltoptions.m4 - delete mode 100644 m4/macros/ltsugar.m4 - delete mode 100644 m4/macros/ltversion.m4 - delete mode 100644 m4/macros/lt~obsolete.m4 +diff --git a/ChangeLog b/ChangeLog +index d996f8e..fd05087 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2015-01-17 Christos Zoulas ++ ++ * Move libtool macro functions from m4/macros to m4 and delete ++ the repository copies. Makes am-utils work with libtool-2.4.4 ++ and fixes the serial number warnings (raven at themaw.net) ++ + 2014-10-28 Christos Zoulas + + ******************************************************************* diff --git a/Makefile.am b/Makefile.am -index 01700f8..f9345c1 100644 +index 7e7082d..bae4615 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,7 +6,7 @@ @@ -56,10 +54,10 @@ index 3d1bb00..ce61925 100644 /* diff --git a/m4/macros/libtool.m4 b/m4/macros/libtool.m4 deleted file mode 100644 -index dfb036f..0000000 +index d7c043f..0000000 --- a/m4/macros/libtool.m4 +++ /dev/null -@@ -1,7982 +0,0 @@ +@@ -1,7997 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, @@ -996,7 +994,7 @@ index dfb036f..0000000 -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` --$RM -r conftest* +-$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - @@ -1374,7 +1372,7 @@ index dfb036f..0000000 - rm -rf conftest* - ;; - --x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext @@ -1386,9 +1384,19 @@ index dfb036f..0000000 - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) -- LD="${LD-ld} -m elf_i386" +- case `/usr/bin/file conftest.o` in +- *x86-64*) +- LD="${LD-ld} -m elf32_x86_64" +- ;; +- *) +- LD="${LD-ld} -m elf_i386" +- ;; +- esac - ;; -- ppc64-*linux*|powerpc64-*linux*) +- powerpc64le-*) +- LD="${LD-ld} -m elf32lppclinux" +- ;; +- powerpc64-*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) @@ -1407,7 +1415,10 @@ index dfb036f..0000000 - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; -- ppc*-*linux*|powerpc*-*linux*) +- powerpcle-*) +- LD="${LD-ld} -m elf64lppc" +- ;; +- powerpc-*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) @@ -1592,7 +1603,7 @@ index dfb036f..0000000 - $2=yes - fi - fi -- $RM -r conftest* +- $RM conftest* -]) - -if test x"[$]$2" = xyes; then @@ -1750,7 +1761,8 @@ index dfb036f..0000000 - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` -- if test -n "$lt_cv_sys_max_cmd_len"; then +- if test -n "$lt_cv_sys_max_cmd_len" && \ +- test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else @@ -2067,14 +2079,14 @@ index dfb036f..0000000 - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD -- $RM -r conftest* +- $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest -- $RM -r conftest* +- $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) @@ -2094,7 +2106,7 @@ index dfb036f..0000000 - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes -- $RM -r conftest* +- $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no @@ -2574,17 +2586,6 @@ index dfb036f..0000000 - esac - ;; - --gnu*) -- version_type=linux # correct to gnu/linux during the next big refactor -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -- soname_spec='${libname}${release}${shared_ext}$major' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no @@ -2701,7 +2702,7 @@ index dfb036f..0000000 - ;; - -# This must be glibc/ELF. --linux* | k*bsd*-gnu | kopensolaris*-gnu) +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no @@ -2746,6 +2747,18 @@ index dfb036f..0000000 - dynamic_linker='GNU/Linux ld.so' - ;; - +-netbsdelf*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='NetBSD ld.elf_so' +- ;; +- -netbsd*) - version_type=sunos - need_lib_prefix=no @@ -3305,10 +3318,6 @@ index dfb036f..0000000 - fi - ;; - --gnu*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; @@ -3347,11 +3356,11 @@ index dfb036f..0000000 - ;; - -# This must be glibc/ELF. --linux* | k*bsd*-gnu | kopensolaris*-gnu) +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - --netbsd*) +-netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else @@ -3544,7 +3553,7 @@ index dfb036f..0000000 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi -- rm -rf conftest*]) +- rm -f conftest*]) -])# LT_PATH_NM - -# Old names: @@ -3608,7 +3617,7 @@ index dfb036f..0000000 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi -- rm -rf conftest*]) +- rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi @@ -3784,7 +3793,7 @@ index dfb036f..0000000 - # Check to see that the pipe works correctly. - pipe_works=no - -- rm -rf conftest* +- rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { @@ -4099,7 +4108,7 @@ index dfb036f..0000000 - ;; - esac - ;; -- linux* | k*bsd*-gnu | kopensolaris*-gnu) +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler @@ -4163,7 +4172,7 @@ index dfb036f..0000000 - ;; - esac - ;; -- netbsd*) +- netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4398,7 +4407,7 @@ index dfb036f..0000000 - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - -- linux* | k*bsd*-gnu | kopensolaris*-gnu) +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) @@ -4640,6 +4649,9 @@ index dfb036f..0000000 - ;; - esac - ;; +- linux* | k*bsd*-gnu | gnu*) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; @@ -4702,6 +4714,9 @@ index dfb036f..0000000 - openbsd*) - with_gnu_ld=no - ;; +- linux* | k*bsd*-gnu | gnu*) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes @@ -4923,7 +4938,7 @@ index dfb036f..0000000 - fi - ;; - -- netbsd*) +- netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= @@ -5100,6 +5115,7 @@ index dfb036f..0000000 - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi +- _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then @@ -5404,7 +5420,7 @@ index dfb036f..0000000 - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - -- netbsd*) +- netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else @@ -5676,7 +5692,7 @@ index dfb036f..0000000 - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), -- [$RM -r conftest* +- [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then @@ -5703,7 +5719,7 @@ index dfb036f..0000000 - else - cat conftest.err 1>&5 - fi -- $RM -r conftest* +- $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; @@ -6284,9 +6300,6 @@ index dfb036f..0000000 - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - -- gnu*) -- ;; -- - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -6448,7 +6461,7 @@ index dfb036f..0000000 - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - -- linux* | k*bsd*-gnu | kopensolaris*-gnu) +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -8042,655 +8055,3 @@ index dfb036f..0000000 -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS -diff --git a/m4/macros/ltoptions.m4 b/m4/macros/ltoptions.m4 -deleted file mode 100644 -index 5d9acd8..0000000 ---- a/m4/macros/ltoptions.m4 -+++ /dev/null -@@ -1,384 +0,0 @@ --# Helper functions for option handling. -*- Autoconf -*- --# --# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, --# Inc. --# Written by Gary V. Vaughan, 2004 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# serial 7 ltoptions.m4 -- --# This is to help aclocal find these macros, as it can't see m4_define. --AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) -- -- --# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) --# ------------------------------------------ --m4_define([_LT_MANGLE_OPTION], --[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) -- -- --# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) --# --------------------------------------- --# Set option OPTION-NAME for macro MACRO-NAME, and if there is a --# matching handler defined, dispatch to it. Other OPTION-NAMEs are --# saved as a flag. --m4_define([_LT_SET_OPTION], --[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl --m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), -- _LT_MANGLE_DEFUN([$1], [$2]), -- [m4_warning([Unknown $1 option `$2'])])[]dnl --]) -- -- --# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) --# ------------------------------------------------------------ --# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. --m4_define([_LT_IF_OPTION], --[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) -- -- --# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) --# ------------------------------------------------------- --# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME --# are set. --m4_define([_LT_UNLESS_OPTIONS], --[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), -- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), -- [m4_define([$0_found])])])[]dnl --m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 --])[]dnl --]) -- -- --# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) --# ---------------------------------------- --# OPTION-LIST is a space-separated list of Libtool options associated --# with MACRO-NAME. If any OPTION has a matching handler declared with --# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about --# the unknown option and exit. --m4_defun([_LT_SET_OPTIONS], --[# Set options --m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), -- [_LT_SET_OPTION([$1], _LT_Option)]) -- --m4_if([$1],[LT_INIT],[ -- dnl -- dnl Simply set some default values (i.e off) if boolean options were not -- dnl specified: -- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no -- ]) -- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no -- ]) -- dnl -- dnl If no reference was made to various pairs of opposing options, then -- dnl we run the default mode handler for the pair. For example, if neither -- dnl `shared' nor `disable-shared' was passed, we enable building of shared -- dnl archives by default: -- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) -- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) -- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) -- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], -- [_LT_ENABLE_FAST_INSTALL]) -- ]) --])# _LT_SET_OPTIONS -- -- --## --------------------------------- ## --## Macros to handle LT_INIT options. ## --## --------------------------------- ## -- --# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) --# ----------------------------------------- --m4_define([_LT_MANGLE_DEFUN], --[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) -- -- --# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) --# ----------------------------------------------- --m4_define([LT_OPTION_DEFINE], --[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl --])# LT_OPTION_DEFINE -- -- --# dlopen --# ------ --LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes --]) -- --AU_DEFUN([AC_LIBTOOL_DLOPEN], --[_LT_SET_OPTION([LT_INIT], [dlopen]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you --put the `dlopen' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) -- -- --# win32-dll --# --------- --# Declare package support for building win32 dll's. --LT_OPTION_DEFINE([LT_INIT], [win32-dll], --[enable_win32_dll=yes -- --case $host in --*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) -- AC_CHECK_TOOL(AS, as, false) -- AC_CHECK_TOOL(DLLTOOL, dlltool, false) -- AC_CHECK_TOOL(OBJDUMP, objdump, false) -- ;; --esac -- --test -z "$AS" && AS=as --_LT_DECL([], [AS], [1], [Assembler program])dnl -- --test -z "$DLLTOOL" && DLLTOOL=dlltool --_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl -- --test -z "$OBJDUMP" && OBJDUMP=objdump --_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl --])# win32-dll -- --AU_DEFUN([AC_LIBTOOL_WIN32_DLL], --[AC_REQUIRE([AC_CANONICAL_HOST])dnl --_LT_SET_OPTION([LT_INIT], [win32-dll]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you --put the `win32-dll' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) -- -- --# _LT_ENABLE_SHARED([DEFAULT]) --# ---------------------------- --# implement the --enable-shared flag, and supports the `shared' and --# `disable-shared' LT_INIT options. --# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. --m4_define([_LT_ENABLE_SHARED], --[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl --AC_ARG_ENABLE([shared], -- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], -- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], -- [p=${PACKAGE-default} -- case $enableval in -- yes) enable_shared=yes ;; -- no) enable_shared=no ;; -- *) -- enable_shared=no -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for pkg in $enableval; do -- IFS="$lt_save_ifs" -- if test "X$pkg" = "X$p"; then -- enable_shared=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) -- -- _LT_DECL([build_libtool_libs], [enable_shared], [0], -- [Whether or not to build shared libraries]) --])# _LT_ENABLE_SHARED -- --LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) --LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) -- --# Old names: --AC_DEFUN([AC_ENABLE_SHARED], --[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) --]) -- --AC_DEFUN([AC_DISABLE_SHARED], --[_LT_SET_OPTION([LT_INIT], [disable-shared]) --]) -- --AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) --AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AM_ENABLE_SHARED], []) --dnl AC_DEFUN([AM_DISABLE_SHARED], []) -- -- -- --# _LT_ENABLE_STATIC([DEFAULT]) --# ---------------------------- --# implement the --enable-static flag, and support the `static' and --# `disable-static' LT_INIT options. --# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. --m4_define([_LT_ENABLE_STATIC], --[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl --AC_ARG_ENABLE([static], -- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], -- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], -- [p=${PACKAGE-default} -- case $enableval in -- yes) enable_static=yes ;; -- no) enable_static=no ;; -- *) -- enable_static=no -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for pkg in $enableval; do -- IFS="$lt_save_ifs" -- if test "X$pkg" = "X$p"; then -- enable_static=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [enable_static=]_LT_ENABLE_STATIC_DEFAULT) -- -- _LT_DECL([build_old_libs], [enable_static], [0], -- [Whether or not to build static libraries]) --])# _LT_ENABLE_STATIC -- --LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) --LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) -- --# Old names: --AC_DEFUN([AC_ENABLE_STATIC], --[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) --]) -- --AC_DEFUN([AC_DISABLE_STATIC], --[_LT_SET_OPTION([LT_INIT], [disable-static]) --]) -- --AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) --AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AM_ENABLE_STATIC], []) --dnl AC_DEFUN([AM_DISABLE_STATIC], []) -- -- -- --# _LT_ENABLE_FAST_INSTALL([DEFAULT]) --# ---------------------------------- --# implement the --enable-fast-install flag, and support the `fast-install' --# and `disable-fast-install' LT_INIT options. --# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. --m4_define([_LT_ENABLE_FAST_INSTALL], --[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl --AC_ARG_ENABLE([fast-install], -- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], -- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], -- [p=${PACKAGE-default} -- case $enableval in -- yes) enable_fast_install=yes ;; -- no) enable_fast_install=no ;; -- *) -- enable_fast_install=no -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for pkg in $enableval; do -- IFS="$lt_save_ifs" -- if test "X$pkg" = "X$p"; then -- enable_fast_install=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) -- --_LT_DECL([fast_install], [enable_fast_install], [0], -- [Whether or not to optimize for fast installation])dnl --])# _LT_ENABLE_FAST_INSTALL -- --LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) --LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) -- --# Old names: --AU_DEFUN([AC_ENABLE_FAST_INSTALL], --[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you put --the `fast-install' option into LT_INIT's first parameter.]) --]) -- --AU_DEFUN([AC_DISABLE_FAST_INSTALL], --[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you put --the `disable-fast-install' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) --dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) -- -- --# _LT_WITH_PIC([MODE]) --# -------------------- --# implement the --with-pic flag, and support the `pic-only' and `no-pic' --# LT_INIT options. --# MODE is either `yes' or `no'. If omitted, it defaults to `both'. --m4_define([_LT_WITH_PIC], --[AC_ARG_WITH([pic], -- [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], -- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], -- [lt_p=${PACKAGE-default} -- case $withval in -- yes|no) pic_mode=$withval ;; -- *) -- pic_mode=default -- # Look at the argument we got. We use all the common list separators. -- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -- for lt_pkg in $withval; do -- IFS="$lt_save_ifs" -- if test "X$lt_pkg" = "X$lt_p"; then -- pic_mode=yes -- fi -- done -- IFS="$lt_save_ifs" -- ;; -- esac], -- [pic_mode=default]) -- --test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) -- --_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl --])# _LT_WITH_PIC -- --LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) --LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) -- --# Old name: --AU_DEFUN([AC_LIBTOOL_PICMODE], --[_LT_SET_OPTION([LT_INIT], [pic-only]) --AC_DIAGNOSE([obsolete], --[$0: Remove this warning and the call to _LT_SET_OPTION when you --put the `pic-only' option into LT_INIT's first parameter.]) --]) -- --dnl aclocal-1.4 backwards compatibility: --dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) -- --## ----------------- ## --## LTDL_INIT Options ## --## ----------------- ## -- --m4_define([_LTDL_MODE], []) --LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], -- [m4_define([_LTDL_MODE], [nonrecursive])]) --LT_OPTION_DEFINE([LTDL_INIT], [recursive], -- [m4_define([_LTDL_MODE], [recursive])]) --LT_OPTION_DEFINE([LTDL_INIT], [subproject], -- [m4_define([_LTDL_MODE], [subproject])]) -- --m4_define([_LTDL_TYPE], []) --LT_OPTION_DEFINE([LTDL_INIT], [installable], -- [m4_define([_LTDL_TYPE], [installable])]) --LT_OPTION_DEFINE([LTDL_INIT], [convenience], -- [m4_define([_LTDL_TYPE], [convenience])]) -diff --git a/m4/macros/ltsugar.m4 b/m4/macros/ltsugar.m4 -deleted file mode 100644 -index 9000a05..0000000 ---- a/m4/macros/ltsugar.m4 -+++ /dev/null -@@ -1,123 +0,0 @@ --# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- --# --# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. --# Written by Gary V. Vaughan, 2004 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# serial 6 ltsugar.m4 -- --# This is to help aclocal find these macros, as it can't see m4_define. --AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) -- -- --# lt_join(SEP, ARG1, [ARG2...]) --# ----------------------------- --# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their --# associated separator. --# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier --# versions in m4sugar had bugs. --m4_define([lt_join], --[m4_if([$#], [1], [], -- [$#], [2], [[$2]], -- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) --m4_define([_lt_join], --[m4_if([$#$2], [2], [], -- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) -- -- --# lt_car(LIST) --# lt_cdr(LIST) --# ------------ --# Manipulate m4 lists. --# These macros are necessary as long as will still need to support --# Autoconf-2.59 which quotes differently. --m4_define([lt_car], [[$1]]) --m4_define([lt_cdr], --[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], -- [$#], 1, [], -- [m4_dquote(m4_shift($@))])]) --m4_define([lt_unquote], $1) -- -- --# lt_append(MACRO-NAME, STRING, [SEPARATOR]) --# ------------------------------------------ --# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. --# Note that neither SEPARATOR nor STRING are expanded; they are appended --# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). --# No SEPARATOR is output if MACRO-NAME was previously undefined (different --# than defined and empty). --# --# This macro is needed until we can rely on Autoconf 2.62, since earlier --# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. --m4_define([lt_append], --[m4_define([$1], -- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) -- -- -- --# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) --# ---------------------------------------------------------- --# Produce a SEP delimited list of all paired combinations of elements of --# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list --# has the form PREFIXmINFIXSUFFIXn. --# Needed until we can rely on m4_combine added in Autoconf 2.62. --m4_define([lt_combine], --[m4_if(m4_eval([$# > 3]), [1], -- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl --[[m4_foreach([_Lt_prefix], [$2], -- [m4_foreach([_Lt_suffix], -- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, -- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) -- -- --# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) --# ----------------------------------------------------------------------- --# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited --# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. --m4_define([lt_if_append_uniq], --[m4_ifdef([$1], -- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], -- [lt_append([$1], [$2], [$3])$4], -- [$5])], -- [lt_append([$1], [$2], [$3])$4])]) -- -- --# lt_dict_add(DICT, KEY, VALUE) --# ----------------------------- --m4_define([lt_dict_add], --[m4_define([$1($2)], [$3])]) -- -- --# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) --# -------------------------------------------- --m4_define([lt_dict_add_subkey], --[m4_define([$1($2:$3)], [$4])]) -- -- --# lt_dict_fetch(DICT, KEY, [SUBKEY]) --# ---------------------------------- --m4_define([lt_dict_fetch], --[m4_ifval([$3], -- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), -- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) -- -- --# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) --# ----------------------------------------------------------------- --m4_define([lt_if_dict_fetch], --[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], -- [$5], -- [$6])]) -- -- --# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) --# -------------------------------------------------------------- --m4_define([lt_dict_filter], --[m4_if([$5], [], [], -- [lt_join(m4_quote(m4_default([$4], [[, ]])), -- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), -- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl --]) -diff --git a/m4/macros/ltversion.m4 b/m4/macros/ltversion.m4 -deleted file mode 100644 -index 07a8602..0000000 ---- a/m4/macros/ltversion.m4 -+++ /dev/null -@@ -1,23 +0,0 @@ --# ltversion.m4 -- version numbers -*- Autoconf -*- --# --# Copyright (C) 2004 Free Software Foundation, Inc. --# Written by Scott James Remnant, 2004 --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# @configure_input@ -- --# serial 3337 ltversion.m4 --# This file is part of GNU Libtool -- --m4_define([LT_PACKAGE_VERSION], [2.4.2]) --m4_define([LT_PACKAGE_REVISION], [1.3337]) -- --AC_DEFUN([LTVERSION_VERSION], --[macro_version='2.4.2' --macro_revision='1.3337' --_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) --_LT_DECL(, macro_revision, 0) --]) -diff --git a/m4/macros/lt~obsolete.m4 b/m4/macros/lt~obsolete.m4 -deleted file mode 100644 -index c573da9..0000000 ---- a/m4/macros/lt~obsolete.m4 -+++ /dev/null -@@ -1,98 +0,0 @@ --# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- --# --# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. --# Written by Scott James Remnant, 2004. --# --# This file is free software; the Free Software Foundation gives --# unlimited permission to copy and/or distribute it, with or without --# modifications, as long as this notice is preserved. -- --# serial 5 lt~obsolete.m4 -- --# These exist entirely to fool aclocal when bootstrapping libtool. --# --# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) --# which have later been changed to m4_define as they aren't part of the --# exported API, or moved to Autoconf or Automake where they belong. --# --# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN --# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us --# using a macro with the same name in our local m4/libtool.m4 it'll --# pull the old libtool.m4 in (it doesn't see our shiny new m4_define --# and doesn't know about Autoconf macros at all.) --# --# So we provide this file, which has a silly filename so it's always --# included after everything else. This provides aclocal with the --# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything --# because those macros already exist, or will be overwritten later. --# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. --# --# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. --# Yes, that means every name once taken will need to remain here until --# we give up compatibility with versions before 1.7, at which point --# we need to keep only those names which we still refer to. -- --# This is to help aclocal find these macros, as it can't see m4_define. --AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) -- --m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) --m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) --m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) --m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) --m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) --m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) --m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) --m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) --m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) --m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) --m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) --m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) --m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) --m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) --m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) --m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) --m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) --m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) --m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) --m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) --m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) --m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) --m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) --m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) --m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) --m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) --m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) --m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) --m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) --m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) --m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) --m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) --m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) --m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) --m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) --m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) --m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) --m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) --m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) --m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) --m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) --m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) --m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) --m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) --m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) --m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) --m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) --m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) --m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) --m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) --m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) --m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) --m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) --m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) --m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) --m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) --m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) --m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch b/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch new file mode 100644 index 0000000..85dcf79 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch @@ -0,0 +1,32 @@ +am-utils-6.2 - fix NFSv3 access method return on non-existent mount point + +From: Ian Kent + +When the NFS v3 access method is called and there is no mount point +corresponding to the path ESTALE needs to be returned the kernel NFS +client so an NFS lookup will be done and the mount point re-mounted. + +If there is no map entry to mount the NFS v3 lookup method can then +return the failure. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index ef07a4a..85cf98c 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1239,9 +1239,9 @@ am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp) + if (!mp) { + post_op_obj = &result.res_u.fail.obj_attributes; + post_op_obj->attributes_follow = 0; +- result.status = nfs_error(ENOENT); ++ result.status = nfs_error(ESTALE); + if (amuDebug(D_TRACE)) +- plog(XLOG_DEBUG, "access_3: ENOENT"); ++ plog(XLOG_DEBUG, "access_3: ESTALE"); + } else { + nfsfattr *fattr = &mp->am_fattr; + am_fattr3 *fattr3; diff --git a/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch b/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch new file mode 100644 index 0000000..85b1801 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch @@ -0,0 +1,76 @@ +am-utils-6.2 - fix NFSv3 lookup dir attribute return value + +From: Ian Kent + +The NFS v3 lookup method, which returns attributes for the directory +containing the object to be looked up, used incorrect mount point +attributes which was causing unusual file system object visibility +problems. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 85cf98c..6a1b717 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -978,6 +978,29 @@ static void fattr_to_wcc_attr(nfsfattr *fattr, am_wcc_attr *wcc_attr) + nfstime_to_am_nfstime3(&fattr->na_ctime, &wcc_attr->ctime); + } + ++static nfsfattr *get_parent_fattr(am_node *mp) ++{ ++ nfsfattr *fattr; ++ ++ /* Set attributes to those of the parent only if this ++ * isn't topvol otherwise just use the mp attributes. ++ */ ++ fattr = &mp->am_fattr; ++ if (mp->am_parent && mp->am_parent->am_parent && ++ !(mp->am_parent->am_parent->am_flags & AMF_ROOT)) ++ fattr = &mp->am_parent->am_fattr; ++ ++ return fattr; ++} ++ ++static void parent_fattr_to_fattr3(am_node *mp, am_fattr3 *fattr3) ++{ ++ nfsfattr *fattr; ++ ++ fattr = get_parent_fattr(mp); ++ fattr_to_fattr3(fattr, fattr3); ++} ++ + static am_nfsstat3 return_estale_or_rofs(am_nfs_fh3 *fh, + am_pre_op_attr *pre_op, + am_post_op_attr *post_op) +@@ -1177,9 +1200,7 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + + /* dir attributes */ + post_op_dir->attributes_follow = 1; +- fattr = &mp->am_fattr; + fattr3 = &post_op_dir->am_post_op_attr_u.attributes; +- fattr_to_fattr3(fattr, fattr3); + + post_op_obj->attributes_follow = 0; + +@@ -1196,6 +1217,7 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + amd_stats.d_drops++; + return 0; + } ++ parent_fattr_to_fattr3(mp, fattr3); + result.status = nfs_error(error); + } else { + /* +@@ -1206,6 +1228,9 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + if (ap->am_ttl < mp->am_ttl) + ap->am_ttl = mp->am_ttl; + ++ /* dir attrs, update after mount */ ++ parent_fattr_to_fattr3(mp, fattr3); ++ + mp_to_fh3(ap, &result.res_u.ok.object); + + /* mount attributes */ diff --git a/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch b/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch new file mode 100644 index 0000000..8260cbf --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch @@ -0,0 +1,53 @@ +am-utils-6.2 - fix NFSv3 readdir post_op_dir attributes return + +From: Ian Kent + +The NFS v3 readdir method is expected to return the attributes of +the directory being read for both success and fail cases. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 6a1b717..00a1dc0 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1627,28 +1627,29 @@ am_nfs3_readdir_3_svc(am_READDIR3args *argp, struct svc_req *rqstp) + result.status = nfs_error(retry); + } else { + am_dirlist3 *list = &result.res_u.ok.reply; ++ nfsfattr *fattr; ++ am_fattr3 *fattr3; + am_nfsstat3 status; + + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "\treaddir_3(%s)", mp->am_path); + ++ fattr = &mp->am_fattr; ++ + status = mp->am_al->al_mnt->mf_ops->readdir(mp, + (voidp)&cookie, list, entries, count); + if (status == 0) { + post_op_dir = &result.res_u.ok.dir_attributes; +- nfsfattr *fattr; +- am_fattr3 *fattr3; +- +- fattr = &mp->am_fattr; +- fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + post_op_dir->attributes_follow = 1; +- fattr_to_fattr3(fattr, fattr3); ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + result.status = AM_NFS3_OK; + } else { + post_op_dir = &result.res_u.fail.dir_attributes; +- post_op_dir->attributes_follow = 0; ++ post_op_dir->attributes_follow = 1; ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + result.status = nfs_error(status); + } ++ fattr_to_fattr3(fattr, fattr3); + + mp->am_stats.s_readdir++; + } diff --git a/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch b/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch new file mode 100644 index 0000000..93b7c35 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch @@ -0,0 +1,62 @@ +am-utils-6.2 - fix NFSv3 unlink3_or_rmdir3() post_op attributes return + +From: Ian Kent + +The function unlink3_or_rmdir3() is called by both NFS v3 remove and +rmdir methods. Both of these methods require post op wcc attributes +to be returned but unlink3_or_rmdir3() was returning only the pre op +wcc attributes. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 00a1dc0..0a43b98 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1033,7 +1033,7 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + am_pre_op_attr *pre_op_dir = &wcc_data->before; + am_post_op_attr *post_op_dir = &wcc_data->after; + nfsfattr *fattr; +- am_wcc_attr *wcc_attr; ++ am_wcc_attr *pre_op_wcc_attr, *post_op_wcc_attr; + am_node *mp, *ap; + int retry; + +@@ -1050,12 +1050,17 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + goto out; + } + ++ post_op_dir->attributes_follow = 1; ++ post_op_wcc_attr = &post_op_dir->am_post_op_attr_u.attributes; ++ + pre_op_dir->attributes_follow = 1; ++ pre_op_wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes; ++ + fattr = &mp->am_fattr; +- wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes; +- fattr_to_wcc_attr(fattr, wcc_attr); ++ fattr_to_wcc_attr(fattr, pre_op_wcc_attr); + + if (mp->am_fattr.na_type != NFDIR) { ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = nfs_error(ENOTDIR); + goto out; + } +@@ -1075,9 +1080,14 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + */ + else if (retry == ENOENT) + retry = 0; ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = nfs_error(retry); + } else { + forcibly_timeout_mp(mp); ++ /* we can't wait for the expire so use the attributes as ++ * they are now for the post op wcc attributes. ++ */ ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = AM_NFS3_OK; + } + diff --git a/am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch b/am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch deleted file mode 100644 index 641822d..0000000 --- a/am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -up am-utils-6.2.0-1.git.bb13dea6/bootstrap.orig am-utils-6.2.0-1.git.bb13dea6/bootstrap ---- am-utils-6.2.0-1.git.bb13dea6/bootstrap.orig 2014-10-21 05:42:37.128509523 -0400 -+++ am-utils-6.2.0-1.git.bb13dea6/bootstrap 2014-10-21 05:51:38.044996707 -0400 -@@ -59,13 +59,13 @@ fi - - echo "AMU: Fixing ylwrap..." - patch << \EOF ----- ylwrap.orig 2014-05-08 21:18:30.000000000 -0400 --+++ ylwrap 2014-05-09 22:25:54.900240000 -0400 --@@ -153,6 +153,22 @@ -- *[\\/]*) prog="`pwd`/$prog" ;; -+--- ylwrap.orig 2014-10-21 05:38:42.210204684 -0400 -++++ ylwrap 2014-10-21 05:44:45.602138698 -0400 -+@@ -161,6 +161,22 @@ -+ *[\\/]*) prog=`pwd`/$prog ;; - esac - --+prefix=`echo $input | sed \ -++prefix=`echo $input | sed \ - + -e 's,^.*/,,g' \ - + -e 's/_gram.[yl]$/_/g' \ - + -e 's/_lex.[yl]$/_/g' \ -@@ -81,10 +81,10 @@ patch << \EOF - + flags="-p $prefix";; - +esac - + -- # FIXME: add hostname here for parallel makes that run commands on -- # other machines. But that might take us over the 14-char limit. - dirname=ylwrap$$ --@@ -166,10 +182,13 @@ -+ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' -+ trap "ret=129; $do_exit" 1 -+@@ -172,10 +188,13 @@ - cd $dirname - - case $# in diff --git a/am-utils.spec b/am-utils.spec index 54dceab..cb1388c 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -1,17 +1,14 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 -%define githash bb13dea6d0bf378f38a2a009a9802577f5399673 -%define shorthash %(echo "%{githash}" | cut -c -8) -%define gitdate 20140906 -%define revision 1 -Release: 4.%{gitdate}git%{shorthash}%{?dist} +%define upstream_version 6.2 +Release: 5%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons URL: http://am-utils.org # Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git -Source: am-utils-%{version}-%{revision}.git.%{shorthash}.tar.gz +Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{upstream_version}.tar.gz Source1: amd.service Source2: am-utils.conf Source3: am-utils.sysconf @@ -28,7 +25,6 @@ BuildRequires: flex BuildRequires: tcp_wrappers-devel BuildRequires: systemd-units BuildRequires: texinfo -BuildRequires: perl-Unicode-EastAsianWidth BuildRequires: gcc BuildRequires: m4 @@ -45,11 +41,14 @@ Requires(preun): systemd-units Requires(postun): systemd-units Requires(preun): /sbin/install-info -# automake ylwrap has changed, fix inline patch in bootstrap. -Patch1: am-utils-6.2.0-1.git.bb13dea6-ylwrap.patch - # Fix problems with possible future libtool rebases (#1181698) -Patch2: am-utils-6.2.0-1.git.bb13dea6-dont-include-auto-generated-macros-in-aclinlude_m4.patch +Patch1: am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch + +Patch2: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch +Patch3: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch +Patch4: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch +Patch5: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch +Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -72,10 +71,14 @@ You should install am-utils if you need a program for automatically mounting and unmounting filesystems. %prep -%setup -q -n %{name}-%{version}-%{revision}.git.%{shorthash} +%setup -q -n %{name}-%{upstream_version} %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 ./bootstrap @@ -87,7 +90,8 @@ chmod +x find-requires %configure \ --enable-shared \ --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ - --enable-libs="-lnsl -lresolv" + --enable-libs="-lnsl -lresolv" \ + --enable-debug sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool @@ -186,6 +190,21 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Dec 17 2015 Fedora Release Engineering - 5:6.2.0-5 +- update to upstream source release 6.2. +- use starting revision 5 to ensure package will update from previous package. +- add configure option enable-debug so we can get logs of any problems with + the new amd NFS v3 service. +- remove BuildRequires: perl-Unicode-EastAsianWidth. +- move libtool macro functions from m4/macros to m4 and delete. +- add debug log trace to NFSv3 readdirplus +- fix NFSv3 access method return on non-existent mount point. +- fix NFSv3 lookup dir attribute return value. +- fix NFSv3 readdir post_op_dir attributes return. +- fix NFSv3 unlink3_or_rmdir3() post_op attributes return. + +- fix mtime update on NFSv3 lookup. + * Tue Jun 16 2015 Fedora Release Engineering - 5:6.2.0-4.20140906gitbb13dea6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild diff --git a/sources b/sources index ebfe662..8907255 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6f631a68f7d98eca36feb5d675ff2296 am-utils-6.2.0-1.git.bb13dea6.tar.gz +4b2ada9cadd24f8a231601274d6fb036 am-utils-6.2.tar.gz From 86ff3f4dd988cabd1facf99fec5782a6d99148ea Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Wed, 30 Dec 2015 17:17:54 +0800 Subject: [PATCH 085/157] - fix revision 5 changelog title. --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index cb1388c..219466a 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 5%{?dist} +Release: 6%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -190,7 +190,10 @@ fi %{_libdir}/libamu.so* %changelog -* Thu Dec 17 2015 Fedora Release Engineering - 5:6.2.0-5 +* Thu Dec 17 2015 Ian Kent - 5:6.2.0-6 +- fix revision 5 changelog title. + +* Thu Dec 17 2015 Ian Kent - 5:6.2.0-5 - update to upstream source release 6.2. - use starting revision 5 to ensure package will update from previous package. - add configure option enable-debug so we can get logs of any problems with From 5da310c6efada994316d7cfffe0adf30e9c73475 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Wed, 30 Dec 2015 17:21:57 +0800 Subject: [PATCH 086/157] - add another changelog correction. --- am-utils.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 219466a..96dcf86 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -191,7 +191,7 @@ fi %changelog * Thu Dec 17 2015 Ian Kent - 5:6.2.0-6 -- fix revision 5 changelog title. +- fix revision 5 changelog entry. * Thu Dec 17 2015 Ian Kent - 5:6.2.0-5 - update to upstream source release 6.2. @@ -205,7 +205,6 @@ fi - fix NFSv3 lookup dir attribute return value. - fix NFSv3 readdir post_op_dir attributes return. - fix NFSv3 unlink3_or_rmdir3() post_op attributes return. - - fix mtime update on NFSv3 lookup. * Tue Jun 16 2015 Fedora Release Engineering - 5:6.2.0-4.20140906gitbb13dea6 From 8d3ff2fd10157a5f0884efd67015fe45c7f84e73 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 24 Jan 2016 11:27:45 +0800 Subject: [PATCH 087/157] - add current Fedora am-utils for version 6.2 revision 5. --- .gitignore | 1 + ...debug-log-trace-to-NFSv3-readdirplus.patch | 25 + am-utils-6.2-allow-old-autoconf-version.patch | 12 + ...uto-generated-macros-in-aclinlude_m4.patch | 8057 +++++++++++++++++ ...d-return-on-non-existent-mount-point.patch | 32 + ...v3-lookup-dir-attribute-return-value.patch | 76 + ...eaddir-post_op_dir-attributes-return.patch | 53 + ..._or_rmdir3-post_op-attributes-return.patch | 62 + am-utils.conf | 35 + am-utils.init | 95 + am-utils.net.map | 5 + am-utils.spec | 584 ++ am-utils.sysconf | 3 + sources | 1 + 14 files changed, 9041 insertions(+) create mode 100644 .gitignore create mode 100644 am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch create mode 100644 am-utils-6.2-allow-old-autoconf-version.patch create mode 100644 am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch create mode 100644 am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch create mode 100644 am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch create mode 100644 am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch create mode 100644 am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch create mode 100644 am-utils.conf create mode 100755 am-utils.init create mode 100644 am-utils.net.map create mode 100644 am-utils.spec create mode 100644 am-utils.sysconf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e72c193 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/am-utils-6.2.tar.gz diff --git a/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch b/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch new file mode 100644 index 0000000..41e23e3 --- /dev/null +++ b/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch @@ -0,0 +1,25 @@ +am-utils-6.2 - add debug log trace to NFSv3 readdirplus + +From: Ian Kent + +Add log trace print to NFSv3 readdirplus for debuging purposes. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 30effba..ef07a4a 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1642,6 +1642,9 @@ am_nfs3_readdirplus_3_svc(am_READDIRPLUS3args *argp, struct svc_req *rqstp) + am_node *mp; + int retry; + ++ if (amuDebug(D_TRACE)) ++ plog(XLOG_DEBUG, "readdirplus_3:"); ++ + mp = fh3_to_mp3(dir, &retry, VLOOK_CREATE); + if (mp == NULL) { + if (retry < 0) { diff --git a/am-utils-6.2-allow-old-autoconf-version.patch b/am-utils-6.2-allow-old-autoconf-version.patch new file mode 100644 index 0000000..9b0edae --- /dev/null +++ b/am-utils-6.2-allow-old-autoconf-version.patch @@ -0,0 +1,12 @@ +diff -up am-utils-6.2/bootstrap.autoconf-version am-utils-6.2/bootstrap +--- am-utils-6.2/bootstrap.autoconf-version 2016-01-24 10:15:30.064158815 +0800 ++++ am-utils-6.2/bootstrap 2016-01-24 10:16:00.884635887 +0800 +@@ -8,7 +8,7 @@ + validateversion() { + local v="$(autoreconf --version 2>&1 | head -1)" + case "$v" in +- *2.69) ;; ++ *2.63) ;; + *) echo "am-utils requires autoconf 2.69, you have:" + echo " $v" + exit 1;; diff --git a/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch b/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch new file mode 100644 index 0000000..fef63f9 --- /dev/null +++ b/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch @@ -0,0 +1,8057 @@ +Move libtool macro functions from m4/macros to m4 and delete + +From: Christos Zoulas + +the repository copies. Makes am-utils work with libtool-2.4.4 +and fixes the serial number warnings (raven at themaw.net) +--- + ChangeLog | 6 + Makefile.am | 2 + configure.ac | 2 + m4/macros/libtool.m4 | 7997 -------------------------------------------------- + 4 files changed, 8 insertions(+), 7999 deletions(-) + delete mode 100644 m4/macros/libtool.m4 + +diff --git a/ChangeLog b/ChangeLog +index d996f8e..fd05087 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2015-01-17 Christos Zoulas ++ ++ * Move libtool macro functions from m4/macros to m4 and delete ++ the repository copies. Makes am-utils work with libtool-2.4.4 ++ and fixes the serial number warnings (raven at themaw.net) ++ + 2014-10-28 Christos Zoulas + + ******************************************************************* +diff --git a/Makefile.am b/Makefile.am +index 7e7082d..bae4615 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,7 +6,7 @@ + + @SET_MAKE@ + +-ACLOCAL_AMFLAGS = -I m4/macros ++ACLOCAL_AMFLAGS = -I m4 + + SUBDIRS = \ + libamu \ +diff --git a/configure.ac b/configure.ac +index 3d1bb00..ce61925 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -17,7 +17,7 @@ AC_INIT([am-utils], + [https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) + AC_MSG_NOTICE(*** INITIALIZATION ***) + AC_CONFIG_SRCDIR([amd/amd.c]) +-AC_CONFIG_MACRO_DIR([m4/macros]) ++AC_CONFIG_MACRO_DIR([m4]) + AM_CONFIG_HEADER(config.h) + AH_TOP([ + /* +diff --git a/m4/macros/libtool.m4 b/m4/macros/libtool.m4 +deleted file mode 100644 +index d7c043f..0000000 +--- a/m4/macros/libtool.m4 ++++ /dev/null +@@ -1,7997 +0,0 @@ +-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +-# +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +-# Foundation, Inc. +-# Written by Gordon Matzigkeit, 1996 +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-m4_define([_LT_COPYING], [dnl +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +-# Foundation, Inc. +-# Written by Gordon Matzigkeit, 1996 +-# +-# This file is part of GNU Libtool. +-# +-# GNU Libtool is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License as +-# published by the Free Software Foundation; either version 2 of +-# the License, or (at your option) any later version. +-# +-# As a special exception to the GNU General Public License, +-# if you distribute this file as part of a program or library that +-# is built using GNU Libtool, you may include this file under the +-# same distribution terms that you use for the rest of that program. +-# +-# GNU Libtool is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with GNU Libtool; see the file COPYING. If not, a copy +-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +-# obtained by writing to the Free Software Foundation, Inc., +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-]) +- +-# serial 57 LT_INIT +- +- +-# LT_PREREQ(VERSION) +-# ------------------ +-# Complain and exit if this libtool version is less that VERSION. +-m4_defun([LT_PREREQ], +-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, +- [m4_default([$3], +- [m4_fatal([Libtool version $1 or higher is required], +- 63)])], +- [$2])]) +- +- +-# _LT_CHECK_BUILDDIR +-# ------------------ +-# Complain if the absolute build directory name contains unusual characters +-m4_defun([_LT_CHECK_BUILDDIR], +-[case `pwd` in +- *\ * | *\ *) +- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +-esac +-]) +- +- +-# LT_INIT([OPTIONS]) +-# ------------------ +-AC_DEFUN([LT_INIT], +-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +-AC_BEFORE([$0], [LT_LANG])dnl +-AC_BEFORE([$0], [LT_OUTPUT])dnl +-AC_BEFORE([$0], [LTDL_INIT])dnl +-m4_require([_LT_CHECK_BUILDDIR])dnl +- +-dnl Autoconf doesn't catch unexpanded LT_ macros by default: +-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +-dnl unless we require an AC_DEFUNed macro: +-AC_REQUIRE([LTOPTIONS_VERSION])dnl +-AC_REQUIRE([LTSUGAR_VERSION])dnl +-AC_REQUIRE([LTVERSION_VERSION])dnl +-AC_REQUIRE([LTOBSOLETE_VERSION])dnl +-m4_require([_LT_PROG_LTMAIN])dnl +- +-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) +- +-dnl Parse OPTIONS +-_LT_SET_OPTIONS([$0], [$1]) +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ltmain" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl +- +-_LT_SETUP +- +-# Only expand once: +-m4_define([LT_INIT]) +-])# LT_INIT +- +-# Old names: +-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +-dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +- +- +-# _LT_CC_BASENAME(CC) +-# ------------------- +-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +-m4_defun([_LT_CC_BASENAME], +-[for cc_temp in $1""; do +- case $cc_temp in +- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; +- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +-]) +- +- +-# _LT_FILEUTILS_DEFAULTS +-# ---------------------- +-# It is okay to use these file commands and assume they have been set +-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +-m4_defun([_LT_FILEUTILS_DEFAULTS], +-[: ${CP="cp -f"} +-: ${MV="mv -f"} +-: ${RM="rm -f"} +-])# _LT_FILEUTILS_DEFAULTS +- +- +-# _LT_SETUP +-# --------- +-m4_defun([_LT_SETUP], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +- +-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +-dnl +-_LT_DECL([], [host_alias], [0], [The host system])dnl +-_LT_DECL([], [host], [0])dnl +-_LT_DECL([], [host_os], [0])dnl +-dnl +-_LT_DECL([], [build_alias], [0], [The build system])dnl +-_LT_DECL([], [build], [0])dnl +-_LT_DECL([], [build_os], [0])dnl +-dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([LT_PATH_LD])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-dnl +-AC_REQUIRE([AC_PROG_LN_S])dnl +-test -z "$LN_S" && LN_S="ln -s" +-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +-dnl +-AC_REQUIRE([LT_CMD_MAX_LEN])dnl +-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +-dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_CHECK_SHELL_FEATURES])dnl +-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +-m4_require([_LT_CMD_RELOAD])dnl +-m4_require([_LT_CHECK_MAGIC_METHOD])dnl +-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +-m4_require([_LT_CMD_OLD_ARCHIVE])dnl +-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +-m4_require([_LT_WITH_SYSROOT])dnl +- +-_LT_CONFIG_LIBTOOL_INIT([ +-# See if we are running on zsh, and set the options which allow our +-# commands through without removal of \ escapes INIT. +-if test -n "\${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +-fi +-]) +-if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +-fi +- +-_LT_CHECK_OBJDIR +- +-m4_require([_LT_TAG_COMPILER])dnl +- +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac +- +-# Global variables: +-ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except MSVC, +-# which needs '.lib'). +-libext=a +- +-with_gnu_ld="$lt_cv_prog_gnu_ld" +- +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" +- +-# Set sane defaults for various variables +-test -z "$CC" && CC=cc +-test -z "$LTCC" && LTCC=$CC +-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +-test -z "$LD" && LD=ld +-test -z "$ac_objext" && ac_objext=o +- +-_LT_CC_BASENAME([$compiler]) +- +-# Only perform the check for file, if the check method requires it +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- _LT_PATH_MAGIC +- fi +- ;; +-esac +- +-# Use C for the default configuration in the libtool script +-LT_SUPPORTED_TAG([CC]) +-_LT_LANG_C_CONFIG +-_LT_LANG_DEFAULT_CONFIG +-_LT_CONFIG_COMMANDS +-])# _LT_SETUP +- +- +-# _LT_PREPARE_SED_QUOTE_VARS +-# -------------------------- +-# Define a few sed substitution that help us do robust quoting. +-m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +-[# Backslashify metacharacters that are still active within +-# double-quoted strings. +-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' +- +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([["`\\]]\)/\\\1/g' +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to delay expansion of an escaped single quote. +-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +-]) +- +-# _LT_PROG_LTMAIN +-# --------------- +-# Note that this code is called both from `configure', and `config.status' +-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +-# `config.status' has no value for ac_aux_dir unless we are using Automake, +-# so we pass a copy along to make sure it has a sensible value anyway. +-m4_defun([_LT_PROG_LTMAIN], +-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +-ltmain="$ac_aux_dir/ltmain.sh" +-])# _LT_PROG_LTMAIN +- +- +-## ------------------------------------- ## +-## Accumulate code for creating libtool. ## +-## ------------------------------------- ## +- +-# So that we can recreate a full libtool script including additional +-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +-# in macros and then make a single call at the end using the `libtool' +-# label. +- +- +-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +-# ---------------------------------------- +-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +-m4_define([_LT_CONFIG_LIBTOOL_INIT], +-[m4_ifval([$1], +- [m4_append([_LT_OUTPUT_LIBTOOL_INIT], +- [$1 +-])])]) +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_INIT]) +- +- +-# _LT_CONFIG_LIBTOOL([COMMANDS]) +-# ------------------------------ +-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +-m4_define([_LT_CONFIG_LIBTOOL], +-[m4_ifval([$1], +- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], +- [$1 +-])])]) +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) +- +- +-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +-# ----------------------------------------------------- +-m4_defun([_LT_CONFIG_SAVE_COMMANDS], +-[_LT_CONFIG_LIBTOOL([$1]) +-_LT_CONFIG_LIBTOOL_INIT([$2]) +-]) +- +- +-# _LT_FORMAT_COMMENT([COMMENT]) +-# ----------------------------- +-# Add leading comment marks to the start of each line, and a trailing +-# full-stop to the whole comment if one is not present already. +-m4_define([_LT_FORMAT_COMMENT], +-[m4_ifval([$1], [ +-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], +- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +-)]) +- +- +- +-## ------------------------ ## +-## FIXME: Eliminate VARNAME ## +-## ------------------------ ## +- +- +-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +-# ------------------------------------------------------------------- +-# CONFIGNAME is the name given to the value in the libtool script. +-# VARNAME is the (base) name used in the configure script. +-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +-# VARNAME. Any other value will be used directly. +-m4_define([_LT_DECL], +-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], +- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], +- [m4_ifval([$1], [$1], [$2])]) +- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) +- m4_ifval([$4], +- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) +- lt_dict_add_subkey([lt_decl_dict], [$2], +- [tagged?], [m4_ifval([$5], [yes], [no])])]) +-]) +- +- +-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +-# -------------------------------------------------------- +-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) +- +- +-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +-# ------------------------------------------------ +-m4_define([lt_decl_tag_varnames], +-[_lt_decl_filter([tagged?], [yes], $@)]) +- +- +-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +-# --------------------------------------------------------- +-m4_define([_lt_decl_filter], +-[m4_case([$#], +- [0], [m4_fatal([$0: too few arguments: $#])], +- [1], [m4_fatal([$0: too few arguments: $#: $1])], +- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], +- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], +- [lt_dict_filter([lt_decl_dict], $@)])[]dnl +-]) +- +- +-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +-# -------------------------------------------------- +-m4_define([lt_decl_quote_varnames], +-[_lt_decl_filter([value], [1], $@)]) +- +- +-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +-# --------------------------------------------------- +-m4_define([lt_decl_dquote_varnames], +-[_lt_decl_filter([value], [2], $@)]) +- +- +-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +-# --------------------------------------------------- +-m4_define([lt_decl_varnames_tagged], +-[m4_assert([$# <= 2])dnl +-_$0(m4_quote(m4_default([$1], [[, ]])), +- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), +- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +-m4_define([_lt_decl_varnames_tagged], +-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) +- +- +-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +-# ------------------------------------------------ +-m4_define([lt_decl_all_varnames], +-[_$0(m4_quote(m4_default([$1], [[, ]])), +- m4_if([$2], [], +- m4_quote(lt_decl_varnames), +- m4_quote(m4_shift($@))))[]dnl +-]) +-m4_define([_lt_decl_all_varnames], +-[lt_join($@, lt_decl_varnames_tagged([$1], +- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +-]) +- +- +-# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +-# ------------------------------------ +-# Quote a variable value, and forward it to `config.status' so that its +-# declaration there will have the same value as in `configure'. VARNAME +-# must have a single quote delimited value for this to work. +-m4_define([_LT_CONFIG_STATUS_DECLARE], +-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) +- +- +-# _LT_CONFIG_STATUS_DECLARATIONS +-# ------------------------------ +-# We delimit libtool config variables with single quotes, so when +-# we write them to config.status, we have to be sure to quote all +-# embedded single quotes properly. In configure, this macro expands +-# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +-# +-# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), +- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) +- +- +-# _LT_LIBTOOL_TAGS +-# ---------------- +-# Output comment and list of tags supported by the script +-m4_defun([_LT_LIBTOOL_TAGS], +-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +-available_tags="_LT_TAGS"dnl +-]) +- +- +-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +-# ----------------------------------- +-# Extract the dictionary values for VARNAME (optionally with TAG) and +-# expand to a commented shell variable setting: +-# +-# # Some comment about what VAR is for. +-# visible_name=$lt_internal_name +-m4_define([_LT_LIBTOOL_DECLARE], +-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], +- [description])))[]dnl +-m4_pushdef([_libtool_name], +- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), +- [0], [_libtool_name=[$]$1], +- [1], [_libtool_name=$lt_[]$1], +- [2], [_libtool_name=$lt_[]$1], +- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +-]) +- +- +-# _LT_LIBTOOL_CONFIG_VARS +-# ----------------------- +-# Produce commented declarations of non-tagged libtool config variables +-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +-# section) are produced by _LT_LIBTOOL_TAG_VARS. +-m4_defun([_LT_LIBTOOL_CONFIG_VARS], +-[m4_foreach([_lt_var], +- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), +- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) +- +- +-# _LT_LIBTOOL_TAG_VARS(TAG) +-# ------------------------- +-m4_define([_LT_LIBTOOL_TAG_VARS], +-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), +- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) +- +- +-# _LT_TAGVAR(VARNAME, [TAGNAME]) +-# ------------------------------ +-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) +- +- +-# _LT_CONFIG_COMMANDS +-# ------------------- +-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +-# variables for single and double quote escaping we saved from calls +-# to _LT_DECL, we can put quote escaped variables declarations +-# into `config.status', and then the shell code to quote escape them in +-# for loops in `config.status'. Finally, any additional code accumulated +-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +-m4_defun([_LT_CONFIG_COMMANDS], +-[AC_PROVIDE_IFELSE([LT_OUTPUT], +- dnl If the libtool generation code has been placed in $CONFIG_LT, +- dnl instead of duplicating it all over again into config.status, +- dnl then we will have config.status run $CONFIG_LT later, so it +- dnl needs to know what name is stored there: +- [AC_CONFIG_COMMANDS([libtool], +- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], +- dnl If the libtool generation code is destined for config.status, +- dnl expand the accumulated commands and init code now: +- [AC_CONFIG_COMMANDS([libtool], +- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +-])#_LT_CONFIG_COMMANDS +- +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +-[ +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-sed_quote_subst='$sed_quote_subst' +-double_quote_subst='$double_quote_subst' +-delay_variable_subst='$delay_variable_subst' +-_LT_CONFIG_STATUS_DECLARATIONS +-LTCC='$LTCC' +-LTCFLAGS='$LTCFLAGS' +-compiler='$compiler_DEFAULT' +- +-# A function that is used when there is no print builtin or printf. +-func_fallback_echo () +-{ +- eval 'cat <<_LTECHO_EOF +-\$[]1 +-_LTECHO_EOF' +-} +- +-# Quote evaled strings. +-for var in lt_decl_all_varnames([[ \ +-]], lt_decl_quote_varnames); do +- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +- *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" +- ;; +- *) +- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +- ;; +- esac +-done +- +-# Double-quote double-evaled strings. +-for var in lt_decl_all_varnames([[ \ +-]], lt_decl_dquote_varnames); do +- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +- *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" +- ;; +- *) +- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +- ;; +- esac +-done +- +-_LT_OUTPUT_LIBTOOL_INIT +-]) +- +-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +-# ------------------------------------ +-# Generate a child script FILE with all initialization necessary to +-# reuse the environment learned by the parent script, and make the +-# file executable. If COMMENT is supplied, it is inserted after the +-# `#!' sequence but before initialization text begins. After this +-# macro, additional text can be appended to FILE to form the body of +-# the child script. The macro ends with non-zero status if the +-# file could not be fully written (such as if the disk is full). +-m4_ifdef([AS_INIT_GENERATED], +-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +-[m4_defun([_LT_GENERATED_FILE_INIT], +-[m4_require([AS_PREPARE])]dnl +-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +-[lt_write_fail=0 +-cat >$1 <<_ASEOF || lt_write_fail=1 +-#! $SHELL +-# Generated by $as_me. +-$2 +-SHELL=\${CONFIG_SHELL-$SHELL} +-export SHELL +-_ASEOF +-cat >>$1 <<\_ASEOF || lt_write_fail=1 +-AS_SHELL_SANITIZE +-_AS_PREPARE +-exec AS_MESSAGE_FD>&1 +-_ASEOF +-test $lt_write_fail = 0 && chmod +x $1[]dnl +-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT +- +-# LT_OUTPUT +-# --------- +-# This macro allows early generation of the libtool script (before +-# AC_OUTPUT is called), incase it is used in configure for compilation +-# tests. +-AC_DEFUN([LT_OUTPUT], +-[: ${CONFIG_LT=./config.lt} +-AC_MSG_NOTICE([creating $CONFIG_LT]) +-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +-[# Run this file to recreate a libtool stub with the current configuration.]) +- +-cat >>"$CONFIG_LT" <<\_LTEOF +-lt_cl_silent=false +-exec AS_MESSAGE_LOG_FD>>config.log +-{ +- echo +- AS_BOX([Running $as_me.]) +-} >&AS_MESSAGE_LOG_FD +- +-lt_cl_help="\ +-\`$as_me' creates a local libtool stub from the current configuration, +-for use in further configure time tests before the real libtool is +-generated. +- +-Usage: $[0] [[OPTIONS]] +- +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -q, --quiet do not print progress messages +- -d, --debug don't remove temporary files +- +-Report bugs to ." +- +-lt_cl_version="\ +-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +-configured by $[0], generated by m4_PACKAGE_STRING. +- +-Copyright (C) 2011 Free Software Foundation, Inc. +-This config.lt script is free software; the Free Software Foundation +-gives unlimited permision to copy, distribute and modify it." +- +-while test $[#] != 0 +-do +- case $[1] in +- --version | --v* | -V ) +- echo "$lt_cl_version"; exit 0 ;; +- --help | --h* | -h ) +- echo "$lt_cl_help"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --quiet | --q* | --silent | --s* | -q ) +- lt_cl_silent=: ;; +- +- -*) AC_MSG_ERROR([unrecognized option: $[1] +-Try \`$[0] --help' for more information.]) ;; +- +- *) AC_MSG_ERROR([unrecognized argument: $[1] +-Try \`$[0] --help' for more information.]) ;; +- esac +- shift +-done +- +-if $lt_cl_silent; then +- exec AS_MESSAGE_FD>/dev/null +-fi +-_LTEOF +- +-cat >>"$CONFIG_LT" <<_LTEOF +-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +-_LTEOF +- +-cat >>"$CONFIG_LT" <<\_LTEOF +-AC_MSG_NOTICE([creating $ofile]) +-_LT_OUTPUT_LIBTOOL_COMMANDS +-AS_EXIT(0) +-_LTEOF +-chmod +x "$CONFIG_LT" +- +-# configure is writing to config.log, but config.lt does its own redirection, +-# appending to config.log, which fails on DOS, as config.log is still kept +-# open by configure. Here we exec the FD to /dev/null, effectively closing +-# config.log, so it can be properly (re)opened and appended to by config.lt. +-lt_cl_success=: +-test "$silent" = yes && +- lt_config_lt_args="$lt_config_lt_args --quiet" +-exec AS_MESSAGE_LOG_FD>/dev/null +-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +-exec AS_MESSAGE_LOG_FD>>config.log +-$lt_cl_success || AS_EXIT(1) +-])# LT_OUTPUT +- +- +-# _LT_CONFIG(TAG) +-# --------------- +-# If TAG is the built-in tag, create an initial libtool script with a +-# default configuration from the untagged config vars. Otherwise add code +-# to config.status for appending the configuration named by TAG from the +-# matching tagged config vars. +-m4_defun([_LT_CONFIG], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-_LT_CONFIG_SAVE_COMMANDS([ +- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl +- m4_if(_LT_TAG, [C], [ +- # See if we are running on zsh, and set the options which allow our +- # commands through without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- +- cfgfile="${ofile}T" +- trap "$RM \"$cfgfile\"; exit 1" 1 2 15 +- $RM "$cfgfile" +- +- cat <<_LT_EOF >> "$cfgfile" +-#! $SHELL +- +-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-_LT_COPYING +-_LT_LIBTOOL_TAGS +- +-# ### BEGIN LIBTOOL CONFIG +-_LT_LIBTOOL_CONFIG_VARS +-_LT_LIBTOOL_TAG_VARS +-# ### END LIBTOOL CONFIG +- +-_LT_EOF +- +- case $host_os in +- aix3*) +- cat <<\_LT_EOF >> "$cfgfile" +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-_LT_EOF +- ;; +- esac +- +- _LT_PROG_LTMAIN +- +- # We use sed instead of cat because bash on DJGPP gets confused if +- # if finds mixed CR/LF and LF-only lines. Since sed operates in +- # text mode, it properly converts lines to CR/LF. This bash problem +- # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" \ +- || (rm -f "$cfgfile"; exit 1) +- +- _LT_PROG_REPLACE_SHELLFNS +- +- mv -f "$cfgfile" "$ofile" || +- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +- chmod +x "$ofile" +-], +-[cat <<_LT_EOF >> "$ofile" +- +-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +-dnl in a comment (ie after a #). +-# ### BEGIN LIBTOOL TAG CONFIG: $1 +-_LT_LIBTOOL_TAG_VARS(_LT_TAG) +-# ### END LIBTOOL TAG CONFIG: $1 +-_LT_EOF +-])dnl /m4_if +-], +-[m4_if([$1], [], [ +- PACKAGE='$PACKAGE' +- VERSION='$VERSION' +- TIMESTAMP='$TIMESTAMP' +- RM='$RM' +- ofile='$ofile'], []) +-])dnl /_LT_CONFIG_SAVE_COMMANDS +-])# _LT_CONFIG +- +- +-# LT_SUPPORTED_TAG(TAG) +-# --------------------- +-# Trace this macro to discover what tags are supported by the libtool +-# --tag option, using: +-# autoconf --trace 'LT_SUPPORTED_TAG:$1' +-AC_DEFUN([LT_SUPPORTED_TAG], []) +- +- +-# C support is built-in for now +-m4_define([_LT_LANG_C_enabled], []) +-m4_define([_LT_TAGS], []) +- +- +-# LT_LANG(LANG) +-# ------------- +-# Enable libtool support for the given language if not already enabled. +-AC_DEFUN([LT_LANG], +-[AC_BEFORE([$0], [LT_OUTPUT])dnl +-m4_case([$1], +- [C], [_LT_LANG(C)], +- [C++], [_LT_LANG(CXX)], +- [Go], [_LT_LANG(GO)], +- [Java], [_LT_LANG(GCJ)], +- [Fortran 77], [_LT_LANG(F77)], +- [Fortran], [_LT_LANG(FC)], +- [Windows Resource], [_LT_LANG(RC)], +- [m4_ifdef([_LT_LANG_]$1[_CONFIG], +- [_LT_LANG($1)], +- [m4_fatal([$0: unsupported language: "$1"])])])dnl +-])# LT_LANG +- +- +-# _LT_LANG(LANGNAME) +-# ------------------ +-m4_defun([_LT_LANG], +-[m4_ifdef([_LT_LANG_]$1[_enabled], [], +- [LT_SUPPORTED_TAG([$1])dnl +- m4_append([_LT_TAGS], [$1 ])dnl +- m4_define([_LT_LANG_]$1[_enabled], [])dnl +- _LT_LANG_$1_CONFIG($1)])dnl +-])# _LT_LANG +- +- +-m4_ifndef([AC_PROG_GO], [ +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_GO. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +-m4_defun([AC_PROG_GO], +-[AC_LANG_PUSH(Go)dnl +-AC_ARG_VAR([GOC], [Go compiler command])dnl +-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +-_AC_ARG_VAR_LDFLAGS()dnl +-AC_CHECK_TOOL(GOC, gccgo) +-if test -z "$GOC"; then +- if test -n "$ac_tool_prefix"; then +- AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) +- fi +-fi +-if test -z "$GOC"; then +- AC_CHECK_PROG(GOC, gccgo, gccgo, false) +-fi +-])#m4_defun +-])#m4_ifndef +- +- +-# _LT_LANG_DEFAULT_CONFIG +-# ----------------------- +-m4_defun([_LT_LANG_DEFAULT_CONFIG], +-[AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [LT_LANG(CXX)], +- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_F77], +- [LT_LANG(F77)], +- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_FC], +- [LT_LANG(FC)], +- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) +- +-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +-dnl pulling things in needlessly. +-AC_PROVIDE_IFELSE([AC_PROG_GCJ], +- [LT_LANG(GCJ)], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], +- [LT_LANG(GCJ)], +- [AC_PROVIDE_IFELSE([LT_PROG_GCJ], +- [LT_LANG(GCJ)], +- [m4_ifdef([AC_PROG_GCJ], +- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) +- m4_ifdef([A][M_PROG_GCJ], +- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) +- m4_ifdef([LT_PROG_GCJ], +- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_GO], +- [LT_LANG(GO)], +- [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) +- +-AC_PROVIDE_IFELSE([LT_PROG_RC], +- [LT_LANG(RC)], +- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +-])# _LT_LANG_DEFAULT_CONFIG +- +-# Obsolete macros: +-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +-dnl AC_DEFUN([AC_LIBTOOL_F77], []) +-dnl AC_DEFUN([AC_LIBTOOL_FC], []) +-dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +-dnl AC_DEFUN([AC_LIBTOOL_RC], []) +- +- +-# _LT_TAG_COMPILER +-# ---------------- +-m4_defun([_LT_TAG_COMPILER], +-[AC_REQUIRE([AC_PROG_CC])dnl +- +-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +-])# _LT_TAG_COMPILER +- +- +-# _LT_COMPILER_BOILERPLATE +-# ------------------------ +-# Check for compiler boilerplate output or warnings with +-# the simple compiler test code. +-m4_defun([_LT_COMPILER_BOILERPLATE], +-[m4_require([_LT_DECL_SED])dnl +-ac_outfile=conftest.$ac_objext +-echo "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$RM conftest* +-])# _LT_COMPILER_BOILERPLATE +- +- +-# _LT_LINKER_BOILERPLATE +-# ---------------------- +-# Check for linker boilerplate output or warnings with +-# the simple link test code. +-m4_defun([_LT_LINKER_BOILERPLATE], +-[m4_require([_LT_DECL_SED])dnl +-ac_outfile=conftest.$ac_objext +-echo "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$RM -r conftest* +-])# _LT_LINKER_BOILERPLATE +- +-# _LT_REQUIRED_DARWIN_CHECKS +-# ------------------------- +-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ +- case $host_os in +- rhapsody* | darwin*) +- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) +- AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) +- AC_CHECK_TOOL([LIPO], [lipo], [:]) +- AC_CHECK_TOOL([OTOOL], [otool], [:]) +- AC_CHECK_TOOL([OTOOL64], [otool64], [:]) +- _LT_DECL([], [DSYMUTIL], [1], +- [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) +- _LT_DECL([], [NMEDIT], [1], +- [Tool to change global to local symbols on Mac OS X]) +- _LT_DECL([], [LIPO], [1], +- [Tool to manipulate fat objects and archives on Mac OS X]) +- _LT_DECL([], [OTOOL], [1], +- [ldd/readelf like tool for Mach-O binaries on Mac OS X]) +- _LT_DECL([], [OTOOL64], [1], +- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) +- +- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], +- [lt_cv_apple_cc_single_mod=no +- if test -z "${LT_MULTI_MODULE}"; then +- # By default we will add the -single_module flag. You can override +- # by either setting the environment variable LT_MULTI_MODULE +- # non-empty at configure time, or by adding -multi_module to the +- # link flags. +- rm -rf libconftest.dylib* +- echo "int foo(void){return 1;}" > conftest.c +- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err +- _lt_result=$? +- # If there is a non-empty error log, and "single_module" +- # appears in it, assume the flag caused a linker warning +- if test -s conftest.err && $GREP single_module conftest.err; then +- cat conftest.err >&AS_MESSAGE_LOG_FD +- # Otherwise, if the output was created with a 0 exit code from +- # the compiler, it worked. +- elif test -f libconftest.dylib && test $_lt_result -eq 0; then +- lt_cv_apple_cc_single_mod=yes +- else +- cat conftest.err >&AS_MESSAGE_LOG_FD +- fi +- rm -rf libconftest.dylib* +- rm -f conftest.* +- fi]) +- +- AC_CACHE_CHECK([for -exported_symbols_list linker flag], +- [lt_cv_ld_exported_symbols_list], +- [lt_cv_ld_exported_symbols_list=no +- save_LDFLAGS=$LDFLAGS +- echo "_main" > conftest.sym +- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [lt_cv_ld_exported_symbols_list=yes], +- [lt_cv_ld_exported_symbols_list=no]) +- LDFLAGS="$save_LDFLAGS" +- ]) +- +- AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], +- [lt_cv_ld_force_load=no +- cat > conftest.c << _LT_EOF +-int forced_loaded() { return 2;} +-_LT_EOF +- echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD +- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD +- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD +- echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD +- $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD +- cat > conftest.c << _LT_EOF +-int main() { return 0;} +-_LT_EOF +- echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err +- _lt_result=$? +- if test -s conftest.err && $GREP force_load conftest.err; then +- cat conftest.err >&AS_MESSAGE_LOG_FD +- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then +- lt_cv_ld_force_load=yes +- else +- cat conftest.err >&AS_MESSAGE_LOG_FD +- fi +- rm -f conftest.err libconftest.a conftest conftest.c +- rm -rf conftest.dSYM +- ]) +- case $host_os in +- rhapsody* | darwin1.[[012]]) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; +- darwin1.*) +- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +- darwin*) # darwin 5.x on +- # if running on 10.5 or later, the deployment target defaults +- # to the OS version, if on x86, and 10.4, the deployment +- # target defaults to 10.4. Don't you love it? +- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in +- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; +- 10.[[012]]*) +- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +- 10.*) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; +- esac +- ;; +- esac +- if test "$lt_cv_apple_cc_single_mod" = "yes"; then +- _lt_dar_single_mod='$single_module' +- fi +- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then +- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' +- else +- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' +- fi +- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then +- _lt_dsymutil='~$DSYMUTIL $lib || :' +- else +- _lt_dsymutil= +- fi +- ;; +- esac +-]) +- +- +-# _LT_DARWIN_LINKER_FEATURES([TAG]) +-# --------------------------------- +-# Checks for linker and compiler features on darwin +-m4_defun([_LT_DARWIN_LINKER_FEATURES], +-[ +- m4_require([_LT_REQUIRED_DARWIN_CHECKS]) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_automatic, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- if test "$lt_cv_ld_force_load" = "yes"; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' +- m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], +- [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)='' +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" +- case $cc_basename in +- ifort*) _lt_dar_can_shared=yes ;; +- *) _lt_dar_can_shared=$GCC ;; +- esac +- if test "$_lt_dar_can_shared" = "yes"; then +- output_verbose_link_cmd=func_echo_all +- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" +- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" +- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" +- m4_if([$1], [CXX], +-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then +- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" +- fi +-],[]) +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +-]) +- +-# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +-# ---------------------------------- +-# Links a minimal program and checks the executable +-# for the system default hardcoded library path. In most cases, +-# this is /usr/lib:/lib, but when the MPI compilers are used +-# the location of the communication and MPI libs are included too. +-# If we don't find anything, use the default library path according +-# to the aix ld manual. +-# Store the results from the different compilers for each TAGNAME. +-# Allow to override them for all tags through lt_cv_aix_libpath. +-m4_defun([_LT_SYS_MODULE_PATH_AIX], +-[m4_require([_LT_DECL_SED])dnl +-if test "${lt_cv_aix_libpath+set}" = set; then +- aix_libpath=$lt_cv_aix_libpath +-else +- AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], +- [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ +- lt_aix_libpath_sed='[ +- /Import File Strings/,/^$/ { +- /^0/ { +- s/^0 *\([^ ]*\) *$/\1/ +- p +- } +- }]' +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +- # Check for a 64-bit object if we didn't find anything. +- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +- fi],[]) +- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" +- fi +- ]) +- aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +-fi +-])# _LT_SYS_MODULE_PATH_AIX +- +- +-# _LT_SHELL_INIT(ARG) +-# ------------------- +-m4_define([_LT_SHELL_INIT], +-[m4_divert_text([M4SH-INIT], [$1 +-])])# _LT_SHELL_INIT +- +- +- +-# _LT_PROG_ECHO_BACKSLASH +-# ----------------------- +-# Find how we can fake an echo command that does not interpret backslash. +-# In particular, with Autoconf 2.60 or later we add some code to the start +-# of the generated configure script which will find a shell with a builtin +-# printf (which we can use as an echo command). +-m4_defun([_LT_PROG_ECHO_BACKSLASH], +-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +- +-AC_MSG_CHECKING([how to print strings]) +-# Test print first, because it will be a builtin if present. +-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ +- test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then +- ECHO='print -r --' +-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then +- ECHO='printf %s\n' +-else +- # Use this function as a fallback that always works. +- func_fallback_echo () +- { +- eval 'cat <<_LTECHO_EOF +-$[]1 +-_LTECHO_EOF' +- } +- ECHO='func_fallback_echo' +-fi +- +-# func_echo_all arg... +-# Invoke $ECHO with all args, space-separated. +-func_echo_all () +-{ +- $ECHO "$*" +-} +- +-case "$ECHO" in +- printf*) AC_MSG_RESULT([printf]) ;; +- print*) AC_MSG_RESULT([print -r]) ;; +- *) AC_MSG_RESULT([cat]) ;; +-esac +- +-m4_ifdef([_AS_DETECT_SUGGESTED], +-[_AS_DETECT_SUGGESTED([ +- test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( +- ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +- PATH=/empty FPATH=/empty; export PATH FPATH +- test "X`printf %s $ECHO`" = "X$ECHO" \ +- || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) +- +-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +-])# _LT_PROG_ECHO_BACKSLASH +- +- +-# _LT_WITH_SYSROOT +-# ---------------- +-AC_DEFUN([_LT_WITH_SYSROOT], +-[AC_MSG_CHECKING([for sysroot]) +-AC_ARG_WITH([sysroot], +-[ --with-sysroot[=DIR] Search for dependent libraries within DIR +- (or the compiler's sysroot if not specified).], +-[], [with_sysroot=no]) +- +-dnl lt_sysroot will always be passed unquoted. We quote it here +-dnl in case the user passed a directory name. +-lt_sysroot= +-case ${with_sysroot} in #( +- yes) +- if test "$GCC" = yes; then +- lt_sysroot=`$CC --print-sysroot 2>/dev/null` +- fi +- ;; #( +- /*) +- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` +- ;; #( +- no|'') +- ;; #( +- *) +- AC_MSG_RESULT([${with_sysroot}]) +- AC_MSG_ERROR([The sysroot must be an absolute path.]) +- ;; +-esac +- +- AC_MSG_RESULT([${lt_sysroot:-no}]) +-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +-[dependent libraries, and in which our libraries should be installed.])]) +- +-# _LT_ENABLE_LOCK +-# --------------- +-m4_defun([_LT_ENABLE_LOCK], +-[AC_ARG_ENABLE([libtool-lock], +- [AS_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- if test "$lt_cv_prog_gnu_ld" = yes; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -melf32bsmip" +- ;; +- *N32*) +- LD="${LD-ld} -melf32bmipn32" +- ;; +- *64-bit*) +- LD="${LD-ld} -melf64bmip" +- ;; +- esac +- else +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- fi +- rm -rf conftest* +- ;; +- +-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +-s390*-*linux*|s390*-*tpf*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *32-bit*) +- case $host in +- x86_64-*kfreebsd*-gnu) +- LD="${LD-ld} -m elf_i386_fbsd" +- ;; +- x86_64-*linux*) +- case `/usr/bin/file conftest.o` in +- *x86-64*) +- LD="${LD-ld} -m elf32_x86_64" +- ;; +- *) +- LD="${LD-ld} -m elf_i386" +- ;; +- esac +- ;; +- powerpc64le-*) +- LD="${LD-ld} -m elf32lppclinux" +- ;; +- powerpc64-*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*kfreebsd*-gnu) +- LD="${LD-ld} -m elf_x86_64_fbsd" +- ;; +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- powerpcle-*) +- LD="${LD-ld} -m elf64lppc" +- ;; +- powerpc-*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*|s390*-*tpf*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_PUSH(C) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_POP]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +-*-*solaris*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *64-bit*) +- case $lt_cv_prog_gnu_ld in +- yes*) +- case $host in +- i?86-*-solaris*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- sparc*-*-solaris*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- # GNU ld 2.21 introduced _sol2 emulations. Use them if available. +- if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then +- LD="${LD-ld}_sol2" +- fi +- ;; +- *) +- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then +- LD="${LD-ld} -64" +- fi +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-esac +- +-need_locks="$enable_libtool_lock" +-])# _LT_ENABLE_LOCK +- +- +-# _LT_PROG_AR +-# ----------- +-m4_defun([_LT_PROG_AR], +-[AC_CHECK_TOOLS(AR, [ar], false) +-: ${AR=ar} +-: ${AR_FLAGS=cru} +-_LT_DECL([], [AR], [1], [The archiver]) +-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) +- +-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], +- [lt_cv_ar_at_file=no +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM], +- [echo conftest.$ac_objext > conftest.lst +- lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' +- AC_TRY_EVAL([lt_ar_try]) +- if test "$ac_status" -eq 0; then +- # Ensure the archiver fails upon bogus file names. +- rm -f conftest.$ac_objext libconftest.a +- AC_TRY_EVAL([lt_ar_try]) +- if test "$ac_status" -ne 0; then +- lt_cv_ar_at_file=@ +- fi +- fi +- rm -f conftest.* libconftest.a +- ]) +- ]) +- +-if test "x$lt_cv_ar_at_file" = xno; then +- archiver_list_spec= +-else +- archiver_list_spec=$lt_cv_ar_at_file +-fi +-_LT_DECL([], [archiver_list_spec], [1], +- [How to feed a file listing to the archiver]) +-])# _LT_PROG_AR +- +- +-# _LT_CMD_OLD_ARCHIVE +-# ------------------- +-m4_defun([_LT_CMD_OLD_ARCHIVE], +-[_LT_PROG_AR +- +-AC_CHECK_TOOL(STRIP, strip, :) +-test -z "$STRIP" && STRIP=: +-_LT_DECL([], [STRIP], [1], [A symbol stripping program]) +- +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-test -z "$RANLIB" && RANLIB=: +-_LT_DECL([], [RANLIB], [1], +- [Commands used to install an old-style archive]) +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= +- +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" +- ;; +- *) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +-fi +- +-case $host_os in +- darwin*) +- lock_old_archive_extraction=yes ;; +- *) +- lock_old_archive_extraction=no ;; +-esac +-_LT_DECL([], [old_postinstall_cmds], [2]) +-_LT_DECL([], [old_postuninstall_cmds], [2]) +-_LT_TAGDECL([], [old_archive_cmds], [2], +- [Commands used to build an old-style archive]) +-_LT_DECL([], [lock_old_archive_extraction], [0], +- [Whether to use a lock for old archive extraction]) +-])# _LT_CMD_OLD_ARCHIVE +- +- +-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------------------- +-# Check whether the given compiler option works +-AC_DEFUN([_LT_COMPILER_OPTION], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_SED])dnl +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$3" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- fi +- $RM conftest* +-]) +- +-if test x"[$]$2" = xyes; then +- m4_if([$5], , :, [$5]) +-else +- m4_if([$6], , :, [$6]) +-fi +-])# _LT_COMPILER_OPTION +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) +- +- +-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------- +-# Check whether the given linker option works +-AC_DEFUN([_LT_LINKER_OPTION], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_SED])dnl +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $3" +- echo "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&AS_MESSAGE_LOG_FD +- $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- else +- $2=yes +- fi +- fi +- $RM -r conftest* +- LDFLAGS="$save_LDFLAGS" +-]) +- +-if test x"[$]$2" = xyes; then +- m4_if([$4], , :, [$4]) +-else +- m4_if([$5], , :, [$5]) +-fi +-])# _LT_LINKER_OPTION +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) +- +- +-# LT_CMD_MAX_LEN +-#--------------- +-AC_DEFUN([LT_CMD_MAX_LEN], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-# find the maximum length of command line arguments +-AC_MSG_CHECKING([the maximum length of command line arguments]) +-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl +- i=0 +- teststring="ABCD" +- +- case $build_os in +- msdosdjgpp*) +- # On DJGPP, this test can blow up pretty badly due to problems in libc +- # (any single argument exceeding 2000 bytes causes a buffer overrun +- # during glob expansion). Even if it were fixed, the result of this +- # check would be larger than it should be. +- lt_cv_sys_max_cmd_len=12288; # 12K is about right +- ;; +- +- gnu*) +- # Under GNU Hurd, this test is not required because there is +- # no limit to the length of command line arguments. +- # Libtool will interpret -1 as no limit whatsoever +- lt_cv_sys_max_cmd_len=-1; +- ;; +- +- cygwin* | mingw* | cegcc*) +- # On Win9x/ME, this test blows up -- it succeeds, but takes +- # about 5 minutes as the teststring grows exponentially. +- # Worse, since 9x/ME are not pre-emptively multitasking, +- # you end up with a "frozen" computer, even though with patience +- # the test eventually succeeds (with a max line length of 256k). +- # Instead, let's just punt: use the minimum linelength reported by +- # all of the supported platforms: 8192 (on NT/2K/XP). +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- mint*) +- # On MiNT this can take a long time and run out of memory. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- amigaos*) +- # On AmigaOS with pdksh, this test takes hours, literally. +- # So we just punt and use a minimum line length of 8192. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +- # This has been around since 386BSD, at least. Likely further. +- if test -x /sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +- elif test -x /usr/sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +- else +- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs +- fi +- # And add a safety zone +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- ;; +- +- interix*) +- # We know the value 262144 and hardcode it with a safety zone (like BSD) +- lt_cv_sys_max_cmd_len=196608 +- ;; +- +- os2*) +- # The test takes a long time on OS/2. +- lt_cv_sys_max_cmd_len=8192 +- ;; +- +- osf*) +- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +- # nice to cause kernel panics so lets avoid the loop below. +- # First set a reasonable default. +- lt_cv_sys_max_cmd_len=16384 +- # +- if test -x /sbin/sysconfig; then +- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +- *1*) lt_cv_sys_max_cmd_len=-1 ;; +- esac +- fi +- ;; +- sco3.2v5*) +- lt_cv_sys_max_cmd_len=102400 +- ;; +- sysv5* | sco5v6* | sysv4.2uw2*) +- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` +- if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` +- else +- lt_cv_sys_max_cmd_len=32768 +- fi +- ;; +- *) +- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` +- if test -n "$lt_cv_sys_max_cmd_len" && \ +- test undefined != "$lt_cv_sys_max_cmd_len"; then +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- else +- # Make teststring a little bigger before we do anything with it. +- # a 1K string should be a reasonable start. +- for i in 1 2 3 4 5 6 7 8 ; do +- teststring=$teststring$teststring +- done +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ +- = "X$teststring$teststring"; } >/dev/null 2>&1 && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- # Only check the string length outside the loop. +- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` +- teststring= +- # Add a significant safety factor because C++ compilers can tack on +- # massive amounts of additional arguments before passing them to the +- # linker. It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +- fi +- ;; +- esac +-]) +-if test -n $lt_cv_sys_max_cmd_len ; then +- AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +-else +- AC_MSG_RESULT(none) +-fi +-max_cmd_len=$lt_cv_sys_max_cmd_len +-_LT_DECL([], [max_cmd_len], [0], +- [What is the maximum length of a command?]) +-])# LT_CMD_MAX_LEN +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) +- +- +-# _LT_HEADER_DLFCN +-# ---------------- +-m4_defun([_LT_HEADER_DLFCN], +-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +-])# _LT_HEADER_DLFCN +- +- +-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# ---------------------------------------------------------------- +-m4_defun([_LT_TRY_DLOPEN_SELF], +-[m4_require([_LT_HEADER_DLFCN])dnl +-if test "$cross_compiling" = yes; then : +- [$4] +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext <<_LT_EOF +-[#line $LINENO "configure" +-#include "confdefs.h" +- +-#if HAVE_DLFCN_H +-#include +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-/* When -fvisbility=hidden is used, assume the code has been annotated +- correspondingly for the symbols needed. */ +-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +-int fnord () __attribute__((visibility("default"))); +-#endif +- +-int fnord () { return 42; } +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else +- { +- if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- else puts (dlerror ()); +- } +- /* dlclose (self); */ +- } +- else +- puts (dlerror ()); +- +- return status; +-}] +-_LT_EOF +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_dlunknown|x*) $3 ;; +- esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_TRY_DLOPEN_SELF +- +- +-# LT_SYS_DLOPEN_SELF +-# ------------------ +-AC_DEFUN([LT_SYS_DLOPEN_SELF], +-[m4_require([_LT_HEADER_DLFCN])dnl +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- mingw* | pw32* | cegcc*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; +- +- darwin*) +- # if libdl is installed we need to link against it +- AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ]) +- ;; +- +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) +- ]) +- ]) +- ]) +- ]) +- ]) +- ;; +- esac +- +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi +- +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" +- +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) +- +- if test "x$lt_cv_dlopen_self" = xyes; then +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac +- +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac +- +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-_LT_DECL([dlopen_support], [enable_dlopen], [0], +- [Whether dlopen is supported]) +-_LT_DECL([dlopen_self], [enable_dlopen_self], [0], +- [Whether dlopen of programs is supported]) +-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], +- [Whether dlopen of statically linked programs is supported]) +-])# LT_SYS_DLOPEN_SELF +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) +- +- +-# _LT_COMPILER_C_O([TAGNAME]) +-# --------------------------- +-# Check to see if options -c and -o are simultaneously supported by compiler. +-# This macro does not hard code the compiler like AC_PROG_CC_C_O. +-m4_defun([_LT_COMPILER_C_O], +-[m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_TAG_COMPILER])dnl +-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], +- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], +- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no +- $RM -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- fi +- fi +- chmod u+w . 2>&AS_MESSAGE_LOG_FD +- $RM conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files +- $RM out/* && rmdir out +- cd .. +- $RM -r conftest +- $RM conftest* +-]) +-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], +- [Does compiler simultaneously support -c and -o options?]) +-])# _LT_COMPILER_C_O +- +- +-# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +-# ---------------------------------- +-# Check to see if we can do hard links to lock some files if needed +-m4_defun([_LT_COMPILER_FILE_LOCKS], +-[m4_require([_LT_ENABLE_LOCK])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-_LT_COMPILER_C_O([$1]) +- +-hard_links="nottested" +-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $RM conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi +-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +-])# _LT_COMPILER_FILE_LOCKS +- +- +-# _LT_CHECK_OBJDIR +-# ---------------- +-m4_defun([_LT_CHECK_OBJDIR], +-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +-[rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- lt_cv_objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- lt_cv_objdir=_libs +-fi +-rmdir .libs 2>/dev/null]) +-objdir=$lt_cv_objdir +-_LT_DECL([], [objdir], [0], +- [The name of the directory that contains temporary libtool files])dnl +-m4_pattern_allow([LT_OBJDIR])dnl +-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", +- [Define to the sub-directory in which libtool stores uninstalled libraries.]) +-])# _LT_CHECK_OBJDIR +- +- +-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +-# -------------------------------------- +-# Check hardcoding attributes. +-m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +-[AC_MSG_CHECKING([how to hardcode library paths into programs]) +-_LT_TAGVAR(hardcode_action, $1)= +-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || +- test -n "$_LT_TAGVAR(runpath_var, $1)" || +- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then +- +- # We can hardcode non-existent directories. +- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && +- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then +- # Linking always hardcodes the temporary library directory. +- _LT_TAGVAR(hardcode_action, $1)=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- _LT_TAGVAR(hardcode_action, $1)=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- _LT_TAGVAR(hardcode_action, $1)=unsupported +-fi +-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) +- +-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || +- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +-_LT_TAGDECL([], [hardcode_action], [0], +- [How to hardcode a shared library path into an executable]) +-])# _LT_LINKER_HARDCODE_LIBPATH +- +- +-# _LT_CMD_STRIPLIB +-# ---------------- +-m4_defun([_LT_CMD_STRIPLIB], +-[m4_require([_LT_DECL_EGREP]) +-striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- old_striplib="$STRIP -S" +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) +- fi +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac +-fi +-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +-_LT_DECL([], [striplib], [1]) +-])# _LT_CMD_STRIPLIB +- +- +-# _LT_SYS_DYNAMIC_LINKER([TAG]) +-# ----------------------------- +-# PORTME Fill in your ld.so characteristics +-m4_defun([_LT_SYS_DYNAMIC_LINKER], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_OBJDUMP])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_CHECK_SHELL_FEATURES])dnl +-AC_MSG_CHECKING([dynamic linker characteristics]) +-m4_if([$1], +- [], [ +-if test "$GCC" = yes; then +- case $host_os in +- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; +- *) lt_awk_arg="/^libraries:/" ;; +- esac +- case $host_os in +- mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; +- *) lt_sed_strip_eq="s,=/,/,g" ;; +- esac +- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` +- case $lt_search_path_spec in +- *\;*) +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` +- ;; +- *) +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` +- ;; +- esac +- # Ok, now we have the path, separated by spaces, we can step through it +- # and add multilib dir if necessary. +- lt_tmp_lt_search_path_spec= +- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` +- for lt_sys_path in $lt_search_path_spec; do +- if test -d "$lt_sys_path/$lt_multi_os_dir"; then +- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" +- else +- test -d "$lt_sys_path" && \ +- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" +- fi +- done +- lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +-BEGIN {RS=" "; FS="/|\n";} { +- lt_foo=""; +- lt_count=0; +- for (lt_i = NF; lt_i > 0; lt_i--) { +- if ($lt_i != "" && $lt_i != ".") { +- if ($lt_i == "..") { +- lt_count++; +- } else { +- if (lt_count == 0) { +- lt_foo="/" $lt_i lt_foo; +- } else { +- lt_count--; +- } +- } +- } +- } +- if (lt_foo != "") { lt_freq[[lt_foo]]++; } +- if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +-}'` +- # AWK program above erroneously prepends '/' to C:/dos/paths +- # for these hosts. +- case $host_os in +- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ +- $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; +- esac +- sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix[[4-9]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- case $host_cpu in +- powerpc) +- # Since July 2007 AmigaOS4 officially supports .so libraries. +- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- ;; +- m68k) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- esac +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[[45]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32* | cegcc*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$cc_basename in +- yes,*) +- # gcc +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname~ +- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then +- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; +- fi' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $RM \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +-m4_if([$1], [],[ +- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) +- ;; +- mingw* | cegcc*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- ;; +- +- *,cl*) +- # Native MSVC +- libname_spec='$name' +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- library_names_spec='${libname}.dll.lib' +- +- case $build_os in +- mingw*) +- sys_lib_search_path_spec= +- lt_save_ifs=$IFS +- IFS=';' +- for lt_path in $LIB +- do +- IFS=$lt_save_ifs +- # Let DOS variable expansion print the short 8.3 style file name. +- lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` +- sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" +- done +- IFS=$lt_save_ifs +- # Convert to MSYS style. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` +- ;; +- cygwin*) +- # Convert to unix form, then to dos form, then back to unix form +- # but this time dos style (no spaces!) so that the unix form looks +- # like /cygdrive/c/PROGRA~1:/cygdr... +- sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` +- sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` +- sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- ;; +- *) +- sys_lib_search_path_spec="$LIB" +- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then +- # It is most probably a Windows format PATH. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- # FIXME: find the short name or the path components, as spaces are +- # common. (e.g. "Program Files" -> "PROGRA~1") +- ;; +- esac +- +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $RM \$dlpath' +- shlibpath_overrides_runpath=yes +- dynamic_linker='Win32 link.exe' +- ;; +- +- *) +- # Assume MSVC wrapper +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' +- dynamic_linker='Win32 ld.exe' +- ;; +- esac +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +-m4_if([$1], [],[ +- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[[23]].*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2.*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[[01]]* | freebsdelf3.[[01]]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ +- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- *) # from 4.6 on, and DragonFly +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-haiku*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- dynamic_linker="$host_os runtime_loader" +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555, ... +- postinstall_cmds='chmod 555 $lib' +- # or fails outright, so override atomically: +- install_override_mode=555 +- ;; +- +-interix[[3-9]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux # correct to gnu/linux during the next big refactor +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- +- # Some binutils ld are patched to set DT_RUNPATH +- AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], +- [lt_cv_shlibpath_overrides_runpath=no +- save_LDFLAGS=$LDFLAGS +- save_libdir=$libdir +- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ +- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], +- [lt_cv_shlibpath_overrides_runpath=yes])]) +- LDFLAGS=$save_LDFLAGS +- libdir=$save_libdir +- ]) +- shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath +- +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-netbsdelf*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='NetBSD ld.elf_so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-*nto* | *qnx*) +- version_type=qnx +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='ldqnx.so' +- ;; +- +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-rdos*) +- dynamic_linker=no +- ;; +- +-solaris*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.3*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; +- +-tpf*) +- # TPF is a cross-target only. Preferred cross-host = GNU/Linux. +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-uts4*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- +-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then +- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +-fi +-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then +- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +-fi +- +-_LT_DECL([], [variables_saved_for_relink], [1], +- [Variables whose values should be saved in libtool wrapper scripts and +- restored at link time]) +-_LT_DECL([], [need_lib_prefix], [0], +- [Do we need the "lib" prefix for modules?]) +-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +-_LT_DECL([], [version_type], [0], [Library versioning type]) +-_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +-_LT_DECL([], [shlibpath_overrides_runpath], [0], +- [Is shlibpath searched before the hard-coded library search path?]) +-_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +-_LT_DECL([], [library_names_spec], [1], +- [[List of archive names. First name is the real one, the rest are links. +- The last name is the one that the linker finds with -lNAME]]) +-_LT_DECL([], [soname_spec], [1], +- [[The coded name of the library, if different from the real name]]) +-_LT_DECL([], [install_override_mode], [1], +- [Permission mode override for installation of shared libraries]) +-_LT_DECL([], [postinstall_cmds], [2], +- [Command to use after installation of a shared archive]) +-_LT_DECL([], [postuninstall_cmds], [2], +- [Command to use after uninstallation of a shared archive]) +-_LT_DECL([], [finish_cmds], [2], +- [Commands used to finish a libtool library installation in a directory]) +-_LT_DECL([], [finish_eval], [1], +- [[As "finish_cmds", except a single script fragment to be evaled but +- not shown]]) +-_LT_DECL([], [hardcode_into_libs], [0], +- [Whether we should hardcode library paths into libraries]) +-_LT_DECL([], [sys_lib_search_path_spec], [2], +- [Compile-time system search path for libraries]) +-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], +- [Run-time system search path for libraries]) +-])# _LT_SYS_DYNAMIC_LINKER +- +- +-# _LT_PATH_TOOL_PREFIX(TOOL) +-# -------------------------- +-# find a file program which can recognize shared library +-AC_DEFUN([_LT_PATH_TOOL_PREFIX], +-[m4_require([_LT_DECL_EGREP])dnl +-AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +-[[\\/*] | ?:[\\/]*]) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="m4_if([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <<_LT_EOF 1>&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-_LT_EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-_LT_DECL([], [MAGIC_CMD], [0], +- [Used to examine libraries when file_magic_cmd begins with "file"])dnl +-])# _LT_PATH_TOOL_PREFIX +- +-# Old name: +-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) +- +- +-# _LT_PATH_MAGIC +-# -------------- +-# find a file program which can recognize a shared library +-m4_defun([_LT_PATH_MAGIC], +-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) +- else +- MAGIC_CMD=: +- fi +-fi +-])# _LT_PATH_MAGIC +- +- +-# LT_PATH_LD +-# ---------- +-# find the pathname to the GNU or non-GNU linker +-AC_DEFUN([LT_PATH_LD], +-[AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl +- +-AC_ARG_WITH([gnu-ld], +- [AS_HELP_STRING([--with-gnu-ld], +- [assume the C compiler uses GNU ld @<:@default=no@:>@])], +- [test "$withval" = no || with_gnu_ld=yes], +- [with_gnu_ld=no])dnl +- +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by $CC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | ?:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` +- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) +-else +- AC_MSG_CHECKING([for non-GNU ld]) +-fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some variants of GNU ld only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then +- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +- lt_cv_file_magic_cmd='func_win32_libid' +- else +- # Keep this pattern in sync with the one in func_win32_libid. +- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- fi +- ;; +- +-cegcc*) +- # use the weaker test based on 'objdump'. See mingw*. +- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; +- +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-freebsd* | dragonfly*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-haiku*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file +- case $host_cpu in +- ia64*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' +- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +- ;; +- hppa*64*) +- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] +- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl +- ;; +- *) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- esac +- ;; +- +-interix[[3-9]]*) +- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-netbsd* | netbsdelf*-gnu) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' +- fi +- ;; +- +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-*nto* | *qnx*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-openbsd*) +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-rdos*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.3*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- siemens) +- lt_cv_deplibs_check_method=pass_all +- ;; +- pc) +- lt_cv_deplibs_check_method=pass_all +- ;; +- esac +- ;; +- +-tpf*) +- lt_cv_deplibs_check_method=pass_all +- ;; +-esac +-]) +- +-file_magic_glob= +-want_nocaseglob=no +-if test "$build" = "$host"; then +- case $host_os in +- mingw* | pw32*) +- if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then +- want_nocaseglob=yes +- else +- file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` +- fi +- ;; +- esac +-fi +- +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +- +-_LT_DECL([], [deplibs_check_method], [1], +- [Method to check whether dependent libraries are shared objects]) +-_LT_DECL([], [file_magic_cmd], [1], +- [Command to use when deplibs_check_method = "file_magic"]) +-_LT_DECL([], [file_magic_glob], [1], +- [How to find potential files when deplibs_check_method = "file_magic"]) +-_LT_DECL([], [want_nocaseglob], [1], +- [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +-])# _LT_CHECK_MAGIC_METHOD +- +- +-# LT_PATH_NM +-# ---------- +-# find the pathname to a BSD- or MS-compatible name lister +-AC_DEFUN([LT_PATH_NM], +-[AC_REQUIRE([AC_PROG_CC])dnl +-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- lt_nm_to_check="${ac_tool_prefix}nm" +- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then +- lt_nm_to_check="$lt_nm_to_check nm" +- fi +- for lt_tmp_nm in $lt_nm_to_check; do +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- tmp_nm="$ac_dir/$lt_tmp_nm" +- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in +- */dev/null* | *'Invalid file or object type'*) +- lt_cv_path_NM="$tmp_nm -B" +- break +- ;; +- *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in +- */dev/null*) +- lt_cv_path_NM="$tmp_nm -p" +- break +- ;; +- *) +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- ;; +- esac +- ;; +- esac +- fi +- done +- IFS="$lt_save_ifs" +- done +- : ${lt_cv_path_NM=no} +-fi]) +-if test "$lt_cv_path_NM" != "no"; then +- NM="$lt_cv_path_NM" +-else +- # Didn't find any BSD compatible name lister, look for dumpbin. +- if test -n "$DUMPBIN"; then : +- # Let the user override the test. +- else +- AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) +- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in +- *COFF*) +- DUMPBIN="$DUMPBIN -symbols" +- ;; +- *) +- DUMPBIN=: +- ;; +- esac +- fi +- AC_SUBST([DUMPBIN]) +- if test "$DUMPBIN" != ":"; then +- NM="$DUMPBIN" +- fi +-fi +-test -z "$NM" && NM=nm +-AC_SUBST([NM]) +-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl +- +-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], +- [lt_cv_nm_interface="BSD nm" +- echo "int some_variable = 0;" > conftest.$ac_ext +- (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$ac_compile" 2>conftest.err) +- cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) +- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) +- cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) +- cat conftest.out >&AS_MESSAGE_LOG_FD +- if $GREP 'External.*some_variable' conftest.out > /dev/null; then +- lt_cv_nm_interface="MS dumpbin" +- fi +- rm -f conftest*]) +-])# LT_PATH_NM +- +-# Old names: +-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AM_PROG_NM], []) +-dnl AC_DEFUN([AC_PROG_NM], []) +- +-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +-# -------------------------------- +-# how to determine the name of the shared library +-# associated with a specific link library. +-# -- PORTME fill in with the dynamic library characteristics +-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +-[m4_require([_LT_DECL_EGREP]) +-m4_require([_LT_DECL_OBJDUMP]) +-m4_require([_LT_DECL_DLLTOOL]) +-AC_CACHE_CHECK([how to associate runtime and link libraries], +-lt_cv_sharedlib_from_linklib_cmd, +-[lt_cv_sharedlib_from_linklib_cmd='unknown' +- +-case $host_os in +-cygwin* | mingw* | pw32* | cegcc*) +- # two different shell functions defined in ltmain.sh +- # decide which to use based on capabilities of $DLLTOOL +- case `$DLLTOOL --help 2>&1` in +- *--identify-strict*) +- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib +- ;; +- *) +- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback +- ;; +- esac +- ;; +-*) +- # fallback: assume linklib IS sharedlib +- lt_cv_sharedlib_from_linklib_cmd="$ECHO" +- ;; +-esac +-]) +-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO +- +-_LT_DECL([], [sharedlib_from_linklib_cmd], [1], +- [Command to associate shared and link libraries]) +-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +- +- +-# _LT_PATH_MANIFEST_TOOL +-# ---------------------- +-# locate the manifest tool +-m4_defun([_LT_PATH_MANIFEST_TOOL], +-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], +- [lt_cv_path_mainfest_tool=no +- echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD +- $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out +- cat conftest.err >&AS_MESSAGE_LOG_FD +- if $GREP 'Manifest Tool' conftest.out > /dev/null; then +- lt_cv_path_mainfest_tool=yes +- fi +- rm -f conftest*]) +-if test "x$lt_cv_path_mainfest_tool" != xyes; then +- MANIFEST_TOOL=: +-fi +-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +-])# _LT_PATH_MANIFEST_TOOL +- +- +-# LT_LIB_M +-# -------- +-# check for math library +-AC_DEFUN([LT_LIB_M], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) +- # These system don't have libm, or don't need it +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, cos, LIBM="-lm") +- ;; +-esac +-AC_SUBST([LIBM]) +-])# LT_LIB_M +- +-# Old name: +-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_CHECK_LIBM], []) +- +- +-# _LT_COMPILER_NO_RTTI([TAGNAME]) +-# ------------------------------- +-m4_defun([_LT_COMPILER_NO_RTTI], +-[m4_require([_LT_TAG_COMPILER])dnl +- +-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- +-if test "$GCC" = yes; then +- case $cc_basename in +- nvcc*) +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; +- esac +- +- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], +- lt_cv_prog_compiler_rtti_exceptions, +- [-fno-rtti -fno-exceptions], [], +- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +-fi +-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], +- [Compiler flag to turn off builtin functions]) +-])# _LT_COMPILER_NO_RTTI +- +- +-# _LT_CMD_GLOBAL_SYMBOLS +-# ---------------------- +-m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-AC_REQUIRE([LT_PATH_LD])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_TAG_COMPILER])dnl +- +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +-[ +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' +- +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' +- +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32* | cegcc*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDEGRST]]' +- fi +- ;; +-irix* | nonstopux*) +- symcode='[[BCDEGRST]]' +- ;; +-osf*) +- symcode='[[BCDEGQRST]]' +- ;; +-solaris*) +- symcode='[[BDRT]]' +- ;; +-sco3.2v5*) +- symcode='[[DT]]' +- ;; +-sysv4.2uw2*) +- symcode='[[DT]]' +- ;; +-sysv5* | sco5v6* | unixware* | OpenUNIX*) +- symcode='[[ABDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac +- +-# If we're using GNU nm, then use its standard symbol codes. +-case `$NM -V 2>&1` in +-*GNU* | *'with BFD'*) +- symcode='[[ABCDGIRSTW]]' ;; +-esac +- +-# Transform an extracted symbol line into a proper C declaration. +-# Some systems (esp. on ia64) link data and code symbols differently, +-# so use this general approach. +-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $build_os in +-mingw*) +- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac +- +-# Try without a prefix underscore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +- symxfrm="\\1 $ac_symprfx\\2 \\2" +- +- # Write the raw and C identifiers. +- if test "$lt_cv_nm_interface" = "MS dumpbin"; then +- # Fake it for dumpbin and say T for any non-static function +- # and D for any global variable. +- # Also find C++ and __fastcall symbols from MSVC++, +- # which start with @ or ?. +- lt_cv_sys_global_symbol_pipe="$AWK ['"\ +-" {last_section=section; section=\$ 3};"\ +-" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +-" \$ 0!~/External *\|/{next};"\ +-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +-" {if(hide[section]) next};"\ +-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +-" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +-" ' prfx=^$ac_symprfx]" +- else +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" +- fi +- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- +- rm -f conftest* +- cat > conftest.$ac_ext <<_LT_EOF +-#ifdef __cplusplus +-extern "C" { +-#endif +-char nm_test_var; +-void nm_test_func(void); +-void nm_test_func(void){} +-#ifdef __cplusplus +-} +-#endif +-int main(){nm_test_var='a';nm_test_func();return(0);} +-_LT_EOF +- +- if AC_TRY_EVAL(ac_compile); then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then +- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then +- cat <<_LT_EOF > conftest.$ac_ext +-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +-/* DATA imports from DLLs on WIN32 con't be const, because runtime +- relocations are performed -- see ld's documentation on pseudo-relocs. */ +-# define LT@&t@_DLSYM_CONST +-#elif defined(__osf__) +-/* This system does not cope well with relocations in const data. */ +-# define LT@&t@_DLSYM_CONST +-#else +-# define LT@&t@_DLSYM_CONST const +-#endif +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-_LT_EOF +- # Now generate the symbol file. +- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' +- +- cat <<_LT_EOF >> conftest.$ac_ext +- +-/* The mapping between symbol names and symbols. */ +-LT@&t@_DLSYM_CONST struct { +- const char *name; +- void *address; +-} +-lt__PROGRAM__LTX_preloaded_symbols[[]] = +-{ +- { "@PROGRAM@", (void *) 0 }, +-_LT_EOF +- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext +- cat <<\_LT_EOF >> conftest.$ac_ext +- {0, (void *) 0} +-}; +- +-/* This works around a problem in FreeBSD linker */ +-#ifdef FREEBSD_WORKAROUND +-static const void *lt_preloaded_setup() { +- return lt__PROGRAM__LTX_preloaded_symbols; +-} +-#endif +- +-#ifdef __cplusplus +-} +-#endif +-_LT_EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- lt_globsym_save_LIBS=$LIBS +- lt_globsym_save_CFLAGS=$CFLAGS +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then +- pipe_works=yes +- fi +- LIBS=$lt_globsym_save_LIBS +- CFLAGS=$lt_globsym_save_CFLAGS +- else +- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD +- cat conftest.$ac_ext >&5 +- fi +- rm -rf conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +-]) +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- lt_cv_sys_global_symbol_to_cdecl= +-fi +-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +- +-# Response file support. +-if test "$lt_cv_nm_interface" = "MS dumpbin"; then +- nm_file_list_spec='@' +-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then +- nm_file_list_spec='@' +-fi +- +-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], +- [Take the output of nm and produce a listing of raw symbols and C names]) +-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], +- [Transform the output of nm in a proper C declaration]) +-_LT_DECL([global_symbol_to_c_name_address], +- [lt_cv_sys_global_symbol_to_c_name_address], [1], +- [Transform the output of nm in a C name address pair]) +-_LT_DECL([global_symbol_to_c_name_address_lib_prefix], +- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], +- [Transform the output of nm in a C name address pair when lib prefix is needed]) +-_LT_DECL([], [nm_file_list_spec], [1], +- [Specify filename containing input files for $NM]) +-]) # _LT_CMD_GLOBAL_SYMBOLS +- +- +-# _LT_COMPILER_PIC([TAGNAME]) +-# --------------------------- +-m4_defun([_LT_COMPILER_PIC], +-[m4_require([_LT_TAG_COMPILER])dnl +-_LT_TAGVAR(lt_prog_compiler_wl, $1)= +-_LT_TAGVAR(lt_prog_compiler_pic, $1)= +-_LT_TAGVAR(lt_prog_compiler_static, $1)= +- +-m4_if([$1], [CXX], [ +- # C++ specific cases for pic, static, wl, etc. +- if test "$GXX" = yes; then +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- m68k) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- esac +- ;; +- +- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- mingw* | cygwin* | os2* | pw32* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- # Although the cygwin gcc ignores -fPIC, still need this for old-style +- # (--disable-auto-import) libraries +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- *djgpp*) +- # DJGPP does not support shared libraries at all +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- haiku*) +- # PIC is the default for Haiku. +- # The "-static" flag exists, but is broken. +- _LT_TAGVAR(lt_prog_compiler_static, $1)= +- ;; +- interix[[3-9]]*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- hpux*) +- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +- # sets the default TLS model and affects inlining. +- case $host_cpu in +- hppa*64*) +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- *qnx* | *nto*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- else +- case $host_os in +- aix[[4-9]]*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- chorus*) +- case $cc_basename in +- cxch68*) +- # Green Hills C++ Compiler +- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" +- ;; +- esac +- ;; +- mingw* | cygwin* | os2* | pw32* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- dgux*) +- case $cc_basename in +- ec++*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- freebsd* | dragonfly*) +- # FreeBSD uses GNU C++ +- ;; +- hpux9* | hpux10* | hpux11*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- if test "$host_cpu" != ia64; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- fi +- ;; +- aCC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- ;; +- *) +- ;; +- esac +- ;; +- interix*) +- # This is c89, which is MS Visual C++ (no shared libs) +- # Anyone wants to do a port? +- ;; +- irix5* | irix6* | nonstopux*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- # CC pic flag -KPIC is the default. +- ;; +- *) +- ;; +- esac +- ;; +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- case $cc_basename in +- KCC*) +- # KAI C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- ecpc* ) +- # old Intel C++ for x86_64 which still supported -KPIC. +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- icpc* ) +- # Intel C++, used to be incompatible with GCC. +- # ICC 10 doesn't accept -KPIC any more. +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgCC* | pgcpp*) +- # Portland Group C++ compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- cxx*) +- # Compaq C++ +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) +- # IBM XL 8.0, 9.0 on PPC and BlueGene +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- esac +- ;; +- esac +- ;; +- lynxos*) +- ;; +- m88k*) +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' +- ;; +- *) +- ;; +- esac +- ;; +- netbsd* | netbsdelf*-gnu) +- ;; +- *qnx* | *nto*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- cxx*) +- # Digital/Compaq C++ +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- psos*) +- ;; +- solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- ;; +- *) +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- lcc*) +- # Lucid +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- *) +- ;; +- esac +- ;; +- vxworks*) +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-], +-[ +- if test "$GCC" = yes; then +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- m68k) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- esac +- ;; +- +- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- +- mingw* | cygwin* | pw32* | os2* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- # Although the cygwin gcc ignores -fPIC, still need this for old-style +- # (--disable-auto-import) libraries +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- +- haiku*) +- # PIC is the default for Haiku. +- # The "-static" flag exists, but is broken. +- _LT_TAGVAR(lt_prog_compiler_static, $1)= +- ;; +- +- hpux*) +- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +- # sets the default TLS model and affects inlining. +- case $host_cpu in +- hppa*64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- +- interix[[3-9]]*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- enable_shared=no +- ;; +- +- *nto* | *qnx*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- +- case $cc_basename in +- nvcc*) # Cuda Compiler Driver 2.2 +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' +- if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" +- fi +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- +- mingw* | cygwin* | pw32* | os2* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- +- hpux9* | hpux10* | hpux11*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- ;; +- +- irix5* | irix6* | nonstopux*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC (with -KPIC) is the default. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- case $cc_basename in +- # old Intel for x86_64 which still supported -KPIC. +- ecc*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- # icc used to be incompatible with GCC. +- # ICC 10 doesn't accept -KPIC any more. +- icc* | ifort*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- # Lahey Fortran 8.1. +- lf95*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' +- ;; +- nagfor*) +- # NAG Fortran compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- ccc*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All Alpha code is PIC. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- xl* | bgxl* | bgf* | mpixl*) +- # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) +- # Sun Fortran 8.3 passes all unrecognized flags to the linker +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='' +- ;; +- *Sun\ F* | *Sun*Fortran*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- *Sun\ C*) +- # Sun C 5.9 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- *Intel*\ [[CF]]*Compiler*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- *Portland\ Group*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- esac +- ;; +- +- newsos6) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *nto* | *qnx*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- +- osf3* | osf4* | osf5*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All OSF/1 code is PIC. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- rdos*) +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- solaris*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; +- *) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; +- esac +- ;; +- +- sunos4*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- unicos*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- +- uts4*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *) +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-]) +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" +- ;; +-esac +- +-AC_CACHE_CHECK([for $compiler option to produce PIC], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) +- +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then +- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], +- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], +- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in +- "" | " "*) ;; +- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; +- esac], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +-fi +-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], +- [Additional compiler flags for building library objects]) +- +-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], +- [How to pass a linker flag through the compiler]) +-# +-# Check to make sure the static flag actually works. +-# +-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], +- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), +- $lt_tmp_static_flag, +- [], +- [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], +- [Compiler flag to prevent dynamic linking]) +-])# _LT_COMPILER_PIC +- +- +-# _LT_LINKER_SHLIBS([TAGNAME]) +-# ---------------------------- +-# See if the linker supports building shared libraries. +-m4_defun([_LT_LINKER_SHLIBS], +-[AC_REQUIRE([LT_PATH_LD])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-m4_require([_LT_PATH_MANIFEST_TOOL])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +-m4_require([_LT_TAG_COMPILER])dnl +-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-m4_if([$1], [CXX], [ +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +- case $host_os in +- aix[[4-9]]*) +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- # Also, AIX nm treats weak defined symbols like other global defined +- # symbols, whereas GNU nm marks them as "W". +- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- fi +- ;; +- pw32*) +- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" +- ;; +- cygwin* | mingw* | cegcc*) +- case $cc_basename in +- cl*) +- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' +- ;; +- *) +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] +- ;; +- esac +- ;; +- linux* | k*bsd*-gnu | gnu*) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; +- *) +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- esac +-], [ +- runpath_var= +- _LT_TAGVAR(allow_undefined_flag, $1)= +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(archive_cmds, $1)= +- _LT_TAGVAR(archive_expsym_cmds, $1)= +- _LT_TAGVAR(compiler_needs_object, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- _LT_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(hardcode_automatic, $1)=no +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- _LT_TAGVAR(hardcode_minus_L, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_TAGVAR(inherit_rpath, $1)=no +- _LT_TAGVAR(link_all_deplibs, $1)=unknown +- _LT_TAGVAR(module_cmds, $1)= +- _LT_TAGVAR(module_expsym_cmds, $1)= +- _LT_TAGVAR(old_archive_from_new_cmds, $1)= +- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= +- _LT_TAGVAR(thread_safe_flag_spec, $1)= +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- _LT_TAGVAR(include_expsyms, $1)= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- # Exclude shared library initialization/finalization symbols. +-dnl Note also adjust exclude_expsyms for C++ above. +- extract_expsyms_cmds= +- +- case $host_os in +- cygwin* | mingw* | pw32* | cegcc*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- linux* | k*bsd*-gnu | gnu*) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; +- esac +- +- _LT_TAGVAR(ld_shlibs, $1)=yes +- +- # On some targets, GNU ld is compatible enough with the native linker +- # that we're better off using the native interface for both. +- lt_use_gnu_ld_interface=no +- if test "$with_gnu_ld" = yes; then +- case $host_os in +- aix*) +- # The AIX port of GNU ld has always aspired to compatibility +- # with the native linker. However, as the warning in the GNU ld +- # block says, versions before 2.19.5* couldn't really create working +- # shared libraries, regardless of the interface used. +- case `$LD -v 2>&1` in +- *\ \(GNU\ Binutils\)\ 2.19.5*) ;; +- *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; +- *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; +- *) +- lt_use_gnu_ld_interface=yes +- ;; +- esac +- ;; +- *) +- lt_use_gnu_ld_interface=yes +- ;; +- esac +- fi +- +- if test "$lt_use_gnu_ld_interface" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>&1` in +- *GNU\ gold*) supports_anon_versioning=yes ;; +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix[[3-9]]*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: the GNU linker, at least up to release 2.19, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to install binutils +-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +-*** You will then need to restart the configuration process. +- +-_LT_EOF +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='' +- ;; +- m68k) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- ;; +- +- beos*) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] +- +- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- haiku*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- interix[[3-9]]*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- +- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) +- tmp_diet=no +- if test "$host_os" = linux-dietlibc; then +- case $cc_basename in +- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) +- esac +- fi +- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ +- && test "$tmp_diet" = no +- then +- tmp_addflag=' $pic_flag' +- tmp_sharedflag='-shared' +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95* | pgfortran*) +- # Portland Group f77 and f90 compilers +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- lf95*) # Lahey Fortran 8.1 +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- tmp_sharedflag='--shared' ;; +- xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) +- tmp_sharedflag='-qmkshrobj' +- tmp_addflag= ;; +- nvcc*) # Cuda Compiler Driver 2.2 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- ;; +- esac +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) # Sun C 5.9 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- tmp_sharedflag='-G' ;; +- *Sun\ F*) # Sun Fortran 8.3 +- tmp_sharedflag='-G' ;; +- esac +- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- +- case $cc_basename in +- xlf* | bgf* | bgxlf* | mpixlf*) +- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself +- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' +- fi +- ;; +- esac +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- netbsd* | netbsdelf*-gnu) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris*) +- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- ;; +- *) +- # For security reasons, it is highly recommended that you always +- # use absolute paths for naming shared libraries, and exclude the +- # DT_RUNPATH tag from executables and libraries. But doing so +- # requires that you compile everything twice, which is a pain. +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- sunos4*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- +- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then +- runpath_var= +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- fi +- ;; +- +- aix[[4-9]]*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- # Also, AIX nm treats weak defined symbols like other global +- # defined symbols, whereas GNU nm marks them as "W". +- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_TAGVAR(archive_cmds, $1)='' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' +- +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && +- strings "$collect2name" | $GREP resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- : +- else +- # We have old collect2 +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=no +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- if test "$with_gnu_ld" = yes; then +- # We only use this code for GNU lds that support --whole-archive. +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- else +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='' +- ;; +- m68k) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- ;; +- +- bsdi[[45]]*) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- case $cc_basename in +- cl*) +- # Native MSVC +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='@' +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; +- else +- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; +- fi~ +- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ +- linknames=' +- # The linker will not automatically build a static lib if we build a DLL. +- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' +- # Don't use ranlib +- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' +- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ +- lt_tool_outputfile="@TOOL_OUTPUT@"~ +- case $lt_outputfile in +- *.exe|*.EXE) ;; +- *) +- lt_outputfile="$lt_outputfile.exe" +- lt_tool_outputfile="$lt_tool_outputfile.exe" +- ;; +- esac~ +- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then +- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; +- $RM "$lt_outputfile.manifest"; +- fi' +- ;; +- *) +- # Assume MSVC wrapper +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- # FIXME: Should let the user specify the lib program. +- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- ;; +- esac +- ;; +- +- darwin* | rhapsody*) +- _LT_DARWIN_LINKER_FEATURES($1) +- ;; +- +- dgux*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2.*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | dragonfly*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- hpux9*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_direct, $1)=yes +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- +- hpux10*) +- if test "$GCC" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- fi +- ;; +- +- hpux11*) +- if test "$GCC" = yes && test "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- m4_if($1, [], [ +- # Older versions of the 11.00 compiler do not understand -b yet +- # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) +- _LT_LINKER_OPTION([if $CC understands -b], +- _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], +- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], +- [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], +- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- fi +- ;; +- +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- # Try to use the -exported_symbol ld option, if it does not +- # work, assume that -exports_file does not work either and +- # implicitly export all symbols. +- # This should be the same for all languages, so no per-tag cache variable. +- AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], +- [lt_cv_irix_exported_symbol], +- [save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" +- AC_LINK_IFELSE( +- [AC_LANG_SOURCE( +- [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], +- [C++], [[int foo (void) { return 0; }]], +- [Fortran 77], [[ +- subroutine foo +- end]], +- [Fortran], [[ +- subroutine foo +- end]])])], +- [lt_cv_irix_exported_symbol=yes], +- [lt_cv_irix_exported_symbol=no]) +- LDFLAGS="$save_LDFLAGS"]) +- if test "$lt_cv_irix_exported_symbol" = yes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' +- fi +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(inherit_rpath, $1)=yes +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- netbsd* | netbsdelf*-gnu) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- newsos6) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *nto* | *qnx*) +- ;; +- +- openbsd*) +- if test -f /usr/libexec/ld.so; then +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- else +- case $host_os in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- os2*) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; +- +- osf3*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- else +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ +- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' +- +- # Both c and cxx compiler support -rpath directly +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- solaris*) +- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +- else +- case `$CC -V 2>&1` in +- *"Compilers 5.0"*) +- wlarc='' +- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' +- ;; +- *) +- wlarc='${wl}' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +- ;; +- esac +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine and reorder linker options, +- # but understands `-z linker_flag'. GCC discards it without `$wl', +- # but is careful enough not to reorder. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- if test "$GCC" = yes; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' +- fi +- ;; +- esac +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4) +- case $host_vendor in +- sni) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' +- _LT_TAGVAR(hardcode_direct, $1)=no +- ;; +- motorola) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4.3*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- _LT_TAGVAR(ld_shlibs, $1)=yes +- fi +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- uts4*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- +- if test x$host_vendor = xsni; then +- case $host in +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' +- ;; +- esac +- fi +- fi +-]) +-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld +- +-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +-_LT_DECL([], [extract_expsyms_cmds], [2], +- [The commands to extract the exported symbol list from a shared archive]) +- +-# +-# Do we need to explicitly link libc? +-# +-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +-x|xyes) +- # Assume -lc should be added +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $_LT_TAGVAR(archive_cmds, $1) in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_CACHE_CHECK([whether -lc should be explicitly linked in], +- [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), +- [$RM conftest* +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) +- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) +- _LT_TAGVAR(allow_undefined_flag, $1)= +- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) +- then +- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- else +- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- fi +- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $RM conftest* +- ]) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) +- ;; +- esac +- fi +- ;; +-esac +- +-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], +- [Whether or not to add -lc for building shared libraries]) +-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], +- [enable_shared_with_static_runtimes], [0], +- [Whether or not to disallow shared libs when runtime libs are static]) +-_LT_TAGDECL([], [export_dynamic_flag_spec], [1], +- [Compiler flag to allow reflexive dlopens]) +-_LT_TAGDECL([], [whole_archive_flag_spec], [1], +- [Compiler flag to generate shared objects directly from archives]) +-_LT_TAGDECL([], [compiler_needs_object], [1], +- [Whether the compiler copes with passing no objects directly]) +-_LT_TAGDECL([], [old_archive_from_new_cmds], [2], +- [Create an old-style archive from a shared archive]) +-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], +- [Create a temporary old-style archive to link instead of a shared archive]) +-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +-_LT_TAGDECL([], [archive_expsym_cmds], [2]) +-_LT_TAGDECL([], [module_cmds], [2], +- [Commands used to build a loadable module if different from building +- a shared archive.]) +-_LT_TAGDECL([], [module_expsym_cmds], [2]) +-_LT_TAGDECL([], [with_gnu_ld], [1], +- [Whether we are building with GNU ld or not]) +-_LT_TAGDECL([], [allow_undefined_flag], [1], +- [Flag that allows shared libraries with undefined symbols to be built]) +-_LT_TAGDECL([], [no_undefined_flag], [1], +- [Flag that enforces no undefined symbols]) +-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], +- [Flag to hardcode $libdir into a binary during linking. +- This must work even if $libdir does not exist]) +-_LT_TAGDECL([], [hardcode_libdir_separator], [1], +- [Whether we need a single "-rpath" flag with a separated argument]) +-_LT_TAGDECL([], [hardcode_direct], [0], +- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +- DIR into the resulting binary]) +-_LT_TAGDECL([], [hardcode_direct_absolute], [0], +- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +- DIR into the resulting binary and the resulting library dependency is +- "absolute", i.e impossible to change by setting ${shlibpath_var} if the +- library is relocated]) +-_LT_TAGDECL([], [hardcode_minus_L], [0], +- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR +- into the resulting binary]) +-_LT_TAGDECL([], [hardcode_shlibpath_var], [0], +- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +- into the resulting binary]) +-_LT_TAGDECL([], [hardcode_automatic], [0], +- [Set to "yes" if building a shared library automatically hardcodes DIR +- into the library and all subsequent libraries and executables linked +- against it]) +-_LT_TAGDECL([], [inherit_rpath], [0], +- [Set to yes if linker adds runtime paths of dependent libraries +- to runtime path list]) +-_LT_TAGDECL([], [link_all_deplibs], [0], +- [Whether libtool must link a program against all its dependency libraries]) +-_LT_TAGDECL([], [always_export_symbols], [0], +- [Set to "yes" if exported symbols are required]) +-_LT_TAGDECL([], [export_symbols_cmds], [2], +- [The commands to list exported symbols]) +-_LT_TAGDECL([], [exclude_expsyms], [1], +- [Symbols that should not be listed in the preloaded symbols]) +-_LT_TAGDECL([], [include_expsyms], [1], +- [Symbols that must always be exported]) +-_LT_TAGDECL([], [prelink_cmds], [2], +- [Commands necessary for linking programs (against libraries) with templates]) +-_LT_TAGDECL([], [postlink_cmds], [2], +- [Commands necessary for finishing linking programs]) +-_LT_TAGDECL([], [file_list_spec], [1], +- [Specify filename containing input files]) +-dnl FIXME: Not yet implemented +-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +-dnl [Compiler flag to generate thread safe objects]) +-])# _LT_LINKER_SHLIBS +- +- +-# _LT_LANG_C_CONFIG([TAG]) +-# ------------------------ +-# Ensure that the configuration variables for a C compiler are suitably +-# defined. These variables are subsequently used by _LT_CONFIG to write +-# the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_C_CONFIG], +-[m4_require([_LT_DECL_EGREP])dnl +-lt_save_CC="$CC" +-AC_LANG_PUSH(C) +- +-# Source file extension for C test sources. +-ac_ext=c +- +-# Object file extension for compiled C test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}' +- +-_LT_TAG_COMPILER +-# Save the default compiler, since it gets overwritten when the other +-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +-compiler_DEFAULT=$CC +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- LT_SYS_DLOPEN_SELF +- _LT_CMD_STRIPLIB +- +- # Report which library types will actually be built +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_CONFIG($1) +-fi +-AC_LANG_POP +-CC="$lt_save_CC" +-])# _LT_LANG_C_CONFIG +- +- +-# _LT_LANG_CXX_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for a C++ compiler are suitably +-# defined. These variables are subsequently used by _LT_CONFIG to write +-# the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_CXX_CONFIG], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_PATH_MANIFEST_TOOL])dnl +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_PROG_CXXCPP +-else +- _lt_caught_CXX_error=yes +-fi +- +-AC_LANG_PUSH(C++) +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(compiler_needs_object, $1)=no +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for C++ test sources. +-ac_ext=cpp +- +-# Object file extension for compiled C++ test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the CXX compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_caught_CXX_error" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="int some_variable = 0;" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC=$CC +- lt_save_CFLAGS=$CFLAGS +- lt_save_LD=$LD +- lt_save_GCC=$GCC +- GCC=$GXX +- lt_save_with_gnu_ld=$with_gnu_ld +- lt_save_path_LD=$lt_cv_path_LD +- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then +- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +- else +- $as_unset lt_cv_prog_gnu_ld +- fi +- if test -n "${lt_cv_path_LDCXX+set}"; then +- lt_cv_path_LD=$lt_cv_path_LDCXX +- else +- $as_unset lt_cv_path_LD +- fi +- test -z "${LDCXX+set}" || LD=$LDCXX +- CC=${CXX-"c++"} +- CFLAGS=$CXXFLAGS +- compiler=$CC +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- +- if test -n "$compiler"; then +- # We don't want -fno-exception when compiling C++ code, so set the +- # no_builtin_flag separately +- if test "$GXX" = yes; then +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +- else +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- fi +- +- if test "$GXX" = yes; then +- # Set up default GNU C++ configuration +- +- LT_PATH_LD +- +- # Check if GNU C++ uses GNU ld as the underlying linker, since the +- # archiving commands below assume that GNU ld is being used. +- if test "$with_gnu_ld" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # If archive_cmds runs LD, not CC, wlarc should be empty +- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to +- # investigate it a little bit more. (MM) +- wlarc='${wl}' +- +- # ancient GNU ld didn't support --whole-archive et. al. +- if eval "`$CC -print-prog-name=ld` --help 2>&1" | +- $GREP 'no-whole-archive' > /dev/null; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- with_gnu_ld=no +- wlarc= +- +- # A generic and very simple default shared library creation +- # command for GNU C++ for the case where it uses the native +- # linker, instead of GNU ld. If possible, this setting should +- # overridden to take advantage of the native linker features on +- # the platform it is being used on. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- fi +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- +- else +- GXX=no +- with_gnu_ld=no +- wlarc= +- fi +- +- # PORTME: fill in a description of your system's C++ link characteristics +- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +- _LT_TAGVAR(ld_shlibs, $1)=yes +- case $host_os in +- aix3*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) +- for ld_flag in $LDFLAGS; do +- case $ld_flag in +- *-brtl*) +- aix_use_runtimelinking=yes +- break +- ;; +- esac +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_TAGVAR(archive_cmds, $1)='' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' +- +- if test "$GXX" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && +- strings "$collect2name" | $GREP resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- : +- else +- # We have old collect2 +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to +- # export. +- _LT_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty +- # executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- if test "$with_gnu_ld" = yes; then +- # We only use this code for GNU lds that support --whole-archive. +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- else +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared +- # libraries. +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- beos*) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- chorus*) +- case $cc_basename in +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- case $GXX,$cc_basename in +- ,cl* | no,cl*) +- # Native MSVC +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='@' +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; +- else +- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; +- fi~ +- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ +- linknames=' +- # The linker will not automatically build a static lib if we build a DLL. +- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- # Don't use ranlib +- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' +- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ +- lt_tool_outputfile="@TOOL_OUTPUT@"~ +- case $lt_outputfile in +- *.exe|*.EXE) ;; +- *) +- lt_outputfile="$lt_outputfile.exe" +- lt_tool_outputfile="$lt_tool_outputfile.exe" +- ;; +- esac~ +- func_to_tool_file "$lt_outputfile"~ +- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then +- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; +- $RM "$lt_outputfile.manifest"; +- fi' +- ;; +- *) +- # g++ +- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- +- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- darwin* | rhapsody*) +- _LT_DARWIN_LINKER_FEATURES($1) +- ;; +- +- dgux*) +- case $cc_basename in +- ec++*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- freebsd2.*) +- # C++ shared libraries reported to be fairly broken before +- # switch to ELF +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- freebsd-elf*) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- ;; +- +- freebsd* | dragonfly*) +- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF +- # conventions +- _LT_TAGVAR(ld_shlibs, $1)=yes +- ;; +- +- haiku*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- hpux9*) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- hpux10*|hpux11*) +- if test $with_gnu_ld = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- ;; +- *) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- esac +- fi +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; +- esac +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes; then +- if test $with_gnu_ld = no; then +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- fi +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- interix[[3-9]]*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- irix5* | irix6*) +- case $cc_basename in +- CC*) +- # SGI C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- +- # Archives containing C++ object files must be created using +- # "CC -ar", where "CC" is the IRIX C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' +- ;; +- *) +- if test "$GXX" = yes; then +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' +- fi +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- esac +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(inherit_rpath, $1)=yes +- ;; +- +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- ;; +- icpc* | ecpc* ) +- # Intel C++ +- with_gnu_ld=yes +- # version 8.0 and above of icpc choke on multiply defined symbols +- # if we add $predep_objects and $postdep_objects, however 7.1 and +- # earlier do not add the objects themselves. +- case `$CC -V 2>&1` in +- *"Version 7."*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- *) # Version 8.0 or newer +- tmp_idyn= +- case $host_cpu in +- ia64*) tmp_idyn=' -i_dynamic';; +- esac +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- esac +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- ;; +- pgCC* | pgcpp*) +- # Portland Group C++ compiler +- case `$CC -V` in +- *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) +- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ +- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' +- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ +- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ +- $RANLIB $oldlib' +- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- ;; +- *) # Version 6 and above use weak symbols +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- ;; +- cxx*) +- # Compaq C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' +- +- runpath_var=LD_RUN_PATH +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' +- ;; +- xl* | mpixl* | bgxl*) +- # IBM XL 8.0 on PPC, with GNU ld +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- +- # Not sure whether something based on +- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 +- # would be better. +- output_verbose_link_cmd='func_echo_all' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- esac +- ;; +- esac +- ;; +- +- lynxos*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- m88k*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- mvs*) +- case $cc_basename in +- cxx*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' +- wlarc= +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- fi +- # Workaround some broken pre-1.5 toolchains +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' +- ;; +- +- *nto* | *qnx*) +- _LT_TAGVAR(ld_shlibs, $1)=yes +- ;; +- +- openbsd2*) +- # C++ shared libraries are fairly broken +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- openbsd*) +- if test -f /usr/libexec/ld.so; then +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- fi +- output_verbose_link_cmd=func_echo_all +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # the KAI C++ compiler. +- case $host in +- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; +- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; +- esac +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- case $host in +- osf3*) +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- ;; +- *) +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ +- echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ +- $RM $lib.exp' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- case $host in +- osf3*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- psos*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- lcc*) +- # Lucid +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes +- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine and reorder linker options, +- # but understands `-z linker_flag'. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' +- ;; +- esac +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- +- output_verbose_link_cmd='func_echo_all' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- +- # The C++ compiler must be used to create the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' +- ;; +- *) +- # GNU C++ compiler with Solaris linker +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' +- if $CC --version | $GREP -v '^2\.7' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- else +- # g++ 2.7 appears to require `-G' NOT `-shared' on this +- # platform. +- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- fi +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +- ;; +- esac +- fi +- ;; +- esac +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ +- '"$_LT_TAGVAR(old_archive_cmds, $1)" +- _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ +- '"$_LT_TAGVAR(reload_cmds, $1)" +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- vxworks*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- +- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +- _LT_TAGVAR(GCC, $1)="$GXX" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_SYS_HIDDEN_LIBDEPS($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- CC=$lt_save_CC +- CFLAGS=$lt_save_CFLAGS +- LDCXX=$LD +- LD=$lt_save_LD +- GCC=$lt_save_GCC +- with_gnu_ld=$lt_save_with_gnu_ld +- lt_cv_path_LDCXX=$lt_cv_path_LD +- lt_cv_path_LD=$lt_save_path_LD +- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +-fi # test "$_lt_caught_CXX_error" != yes +- +-AC_LANG_POP +-])# _LT_LANG_CXX_CONFIG +- +- +-# _LT_FUNC_STRIPNAME_CNF +-# ---------------------- +-# func_stripname_cnf prefix suffix name +-# strip PREFIX and SUFFIX off of NAME. +-# PREFIX and SUFFIX must not contain globbing or regex special +-# characters, hashes, percent signs, but SUFFIX may contain a leading +-# dot (in which case that matches only a dot). +-# +-# This function is identical to the (non-XSI) version of func_stripname, +-# except this one can be used by m4 code that may be executed by configure, +-# rather than the libtool script. +-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +-AC_REQUIRE([_LT_DECL_SED]) +-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +-func_stripname_cnf () +-{ +- case ${2} in +- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; +- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; +- esac +-} # func_stripname_cnf +-])# _LT_FUNC_STRIPNAME_CNF +- +-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +-# --------------------------------- +-# Figure out "hidden" library dependencies from verbose +-# compiler output when linking a shared library. +-# Parse the compiler output and extract the necessary +-# objects, libraries and library flags. +-m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +-# Dependencies to place before and after the object being linked: +-_LT_TAGVAR(predep_objects, $1)= +-_LT_TAGVAR(postdep_objects, $1)= +-_LT_TAGVAR(predeps, $1)= +-_LT_TAGVAR(postdeps, $1)= +-_LT_TAGVAR(compiler_lib_search_path, $1)= +- +-dnl we can't use the lt_simple_compile_test_code here, +-dnl because it contains code intended for an executable, +-dnl not a library. It's possible we should let each +-dnl tag define a new lt_????_link_test_code variable, +-dnl but it's only used here... +-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +-int a; +-void foo (void) { a = 0; } +-_LT_EOF +-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +-class Foo +-{ +-public: +- Foo (void) { a = 0; } +-private: +- int a; +-}; +-_LT_EOF +-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF +- subroutine foo +- implicit none +- integer*4 a +- a=0 +- return +- end +-_LT_EOF +-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF +- subroutine foo +- implicit none +- integer a +- a=0 +- return +- end +-_LT_EOF +-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +-public class foo { +- private int a; +- public void bar (void) { +- a = 0; +- } +-}; +-_LT_EOF +-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +-package foo +-func foo() { +-} +-_LT_EOF +-]) +- +-_lt_libdeps_save_CFLAGS=$CFLAGS +-case "$CC $CFLAGS " in #( +-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +-esac +- +-dnl Parse the compiler output and extract the necessary +-dnl objects, libraries and library flags. +-if AC_TRY_EVAL(ac_compile); then +- # Parse the compiler output and extract the necessary +- # objects, libraries and library flags. +- +- # Sentinel used to keep track of whether or not we are before +- # the conftest object file. +- pre_test_object_deps_done=no +- +- for p in `eval "$output_verbose_link_cmd"`; do +- case ${prev}${p} in +- +- -L* | -R* | -l*) +- # Some compilers place space between "-{L,R}" and the path. +- # Remove the space. +- if test $p = "-L" || +- test $p = "-R"; then +- prev=$p +- continue +- fi +- +- # Expand the sysroot to ease extracting the directories later. +- if test -z "$prev"; then +- case $p in +- -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; +- -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; +- -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; +- esac +- fi +- case $p in +- =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; +- esac +- if test "$pre_test_object_deps_done" = no; then +- case ${prev} in +- -L | -R) +- # Internal compiler library paths should come after those +- # provided the user. The postdeps already come after the +- # user supplied libs so there is no need to process them. +- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then +- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" +- else +- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" +- fi +- ;; +- # The "-l" case would never come before the object being +- # linked, so don't bother handling this case. +- esac +- else +- if test -z "$_LT_TAGVAR(postdeps, $1)"; then +- _LT_TAGVAR(postdeps, $1)="${prev}${p}" +- else +- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" +- fi +- fi +- prev= +- ;; +- +- *.lto.$objext) ;; # Ignore GCC LTO objects +- *.$objext) +- # This assumes that the test object file only shows up +- # once in the compiler output. +- if test "$p" = "conftest.$objext"; then +- pre_test_object_deps_done=yes +- continue +- fi +- +- if test "$pre_test_object_deps_done" = no; then +- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then +- _LT_TAGVAR(predep_objects, $1)="$p" +- else +- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" +- fi +- else +- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then +- _LT_TAGVAR(postdep_objects, $1)="$p" +- else +- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" +- fi +- fi +- ;; +- +- *) ;; # Ignore the rest. +- +- esac +- done +- +- # Clean up. +- rm -f a.out a.exe +-else +- echo "libtool.m4: error: problem compiling $1 test program" +-fi +- +-$RM -f confest.$objext +-CFLAGS=$_lt_libdeps_save_CFLAGS +- +-# PORTME: override above test on systems where it is broken +-m4_if([$1], [CXX], +-[case $host_os in +-interix[[3-9]]*) +- # Interix 3.5 installs completely hosed .la files for C++, so rather than +- # hack all around it, let's just trust "g++" to DTRT. +- _LT_TAGVAR(predep_objects,$1)= +- _LT_TAGVAR(postdep_objects,$1)= +- _LT_TAGVAR(postdeps,$1)= +- ;; +- +-linux*) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- +- # The more standards-conforming stlport4 library is +- # incompatible with the Cstd library. Avoid specifying +- # it if it's in CXXFLAGS. Ignore libCrun as +- # -library=stlport4 depends on it. +- case " $CXX $CXXFLAGS " in +- *" -library=stlport4 "*) +- solaris_use_stlport4=yes +- ;; +- esac +- +- if test "$solaris_use_stlport4" != yes; then +- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' +- fi +- ;; +- esac +- ;; +- +-solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # The more standards-conforming stlport4 library is +- # incompatible with the Cstd library. Avoid specifying +- # it if it's in CXXFLAGS. Ignore libCrun as +- # -library=stlport4 depends on it. +- case " $CXX $CXXFLAGS " in +- *" -library=stlport4 "*) +- solaris_use_stlport4=yes +- ;; +- esac +- +- # Adding this requires a known-good setup of shared libraries for +- # Sun compiler versions before 5.6, else PIC objects from an old +- # archive will be linked into the output, leading to subtle bugs. +- if test "$solaris_use_stlport4" != yes; then +- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' +- fi +- ;; +- esac +- ;; +-esac +-]) +- +-case " $_LT_TAGVAR(postdeps, $1) " in +-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +-esac +- _LT_TAGVAR(compiler_lib_search_dirs, $1)= +-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then +- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +-fi +-_LT_TAGDECL([], [compiler_lib_search_dirs], [1], +- [The directories searched by this compiler when creating a shared library]) +-_LT_TAGDECL([], [predep_objects], [1], +- [Dependencies to place before and after the objects being linked to +- create a shared library]) +-_LT_TAGDECL([], [postdep_objects], [1]) +-_LT_TAGDECL([], [predeps], [1]) +-_LT_TAGDECL([], [postdeps], [1]) +-_LT_TAGDECL([], [compiler_lib_search_path], [1], +- [The library search path used internally by the compiler when linking +- a shared library]) +-])# _LT_SYS_HIDDEN_LIBDEPS +- +- +-# _LT_LANG_F77_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for a Fortran 77 compiler are +-# suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_F77_CONFIG], +-[AC_LANG_PUSH(Fortran 77) +-if test -z "$F77" || test "X$F77" = "Xno"; then +- _lt_disable_F77=yes +-fi +- +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for f77 test sources. +-ac_ext=f +- +-# Object file extension for compiled f77 test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the F77 compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_disable_F77" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="\ +- subroutine t +- return +- end +-" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code="\ +- program t +- end +-" +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC="$CC" +- lt_save_GCC=$GCC +- lt_save_CFLAGS=$CFLAGS +- CC=${F77-"f77"} +- CFLAGS=$FFLAGS +- compiler=$CC +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- GCC=$G77 +- if test -n "$compiler"; then +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_TAGVAR(GCC, $1)="$G77" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- GCC=$lt_save_GCC +- CC="$lt_save_CC" +- CFLAGS="$lt_save_CFLAGS" +-fi # test "$_lt_disable_F77" != yes +- +-AC_LANG_POP +-])# _LT_LANG_F77_CONFIG +- +- +-# _LT_LANG_FC_CONFIG([TAG]) +-# ------------------------- +-# Ensure that the configuration variables for a Fortran compiler are +-# suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_FC_CONFIG], +-[AC_LANG_PUSH(Fortran) +- +-if test -z "$FC" || test "X$FC" = "Xno"; then +- _lt_disable_FC=yes +-fi +- +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for fc test sources. +-ac_ext=${ac_fc_srcext-f} +- +-# Object file extension for compiled fc test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the FC compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_disable_FC" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="\ +- subroutine t +- return +- end +-" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code="\ +- program t +- end +-" +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC="$CC" +- lt_save_GCC=$GCC +- lt_save_CFLAGS=$CFLAGS +- CC=${FC-"f95"} +- CFLAGS=$FCFLAGS +- compiler=$CC +- GCC=$ac_cv_fc_compiler_gnu +- +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- +- if test -n "$compiler"; then +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_SYS_HIDDEN_LIBDEPS($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- GCC=$lt_save_GCC +- CC=$lt_save_CC +- CFLAGS=$lt_save_CFLAGS +-fi # test "$_lt_disable_FC" != yes +- +-AC_LANG_POP +-])# _LT_LANG_FC_CONFIG +- +- +-# _LT_LANG_GCJ_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for the GNU Java Compiler compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_GCJ_CONFIG], +-[AC_REQUIRE([LT_PROG_GCJ])dnl +-AC_LANG_SAVE +- +-# Source file extension for Java test sources. +-ac_ext=java +- +-# Object file extension for compiled Java test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="class foo {}" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC=yes +-CC=${GCJ-"gcj"} +-CFLAGS=$GCJFLAGS +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_TAGVAR(LD, $1)="$LD" +-_LT_CC_BASENAME([$compiler]) +- +-# GCJ did not exist at the time GCC didn't implicitly link libc in. +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +-fi +- +-AC_LANG_RESTORE +- +-GCC=$lt_save_GCC +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_GCJ_CONFIG +- +- +-# _LT_LANG_GO_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for the GNU Go compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_GO_CONFIG], +-[AC_REQUIRE([LT_PROG_GO])dnl +-AC_LANG_SAVE +- +-# Source file extension for Go test sources. +-ac_ext=go +- +-# Object file extension for compiled Go test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="package main; func main() { }" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='package main; func main() { }' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC=yes +-CC=${GOC-"gccgo"} +-CFLAGS=$GOFLAGS +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_TAGVAR(LD, $1)="$LD" +-_LT_CC_BASENAME([$compiler]) +- +-# Go did not exist at the time GCC didn't implicitly link libc in. +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +-fi +- +-AC_LANG_RESTORE +- +-GCC=$lt_save_GCC +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_GO_CONFIG +- +- +-# _LT_LANG_RC_CONFIG([TAG]) +-# ------------------------- +-# Ensure that the configuration variables for the Windows resource compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_RC_CONFIG], +-[AC_REQUIRE([LT_PROG_RC])dnl +-AC_LANG_SAVE +- +-# Source file extension for RC test sources. +-ac_ext=rc +- +-# Object file extension for compiled RC test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' +- +-# Code to be used in simple link tests +-lt_simple_link_test_code="$lt_simple_compile_test_code" +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC="$CC" +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC= +-CC=${RC-"windres"} +-CFLAGS= +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_CC_BASENAME([$compiler]) +-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- +-if test -n "$compiler"; then +- : +- _LT_CONFIG($1) +-fi +- +-GCC=$lt_save_GCC +-AC_LANG_RESTORE +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_RC_CONFIG +- +- +-# LT_PROG_GCJ +-# ----------- +-AC_DEFUN([LT_PROG_GCJ], +-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], +- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], +- [AC_CHECK_TOOL(GCJ, gcj,) +- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" +- AC_SUBST(GCJFLAGS)])])[]dnl +-]) +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +- +- +-# LT_PROG_GO +-# ---------- +-AC_DEFUN([LT_PROG_GO], +-[AC_CHECK_TOOL(GOC, gccgo,) +-]) +- +- +-# LT_PROG_RC +-# ---------- +-AC_DEFUN([LT_PROG_RC], +-[AC_CHECK_TOOL(RC, windres,) +-]) +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_RC], []) +- +- +-# _LT_DECL_EGREP +-# -------------- +-# If we don't have a new enough Autoconf to choose the best grep +-# available, choose the one first in the user's PATH. +-m4_defun([_LT_DECL_EGREP], +-[AC_REQUIRE([AC_PROG_EGREP])dnl +-AC_REQUIRE([AC_PROG_FGREP])dnl +-test -z "$GREP" && GREP=grep +-_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +-_LT_DECL([], [EGREP], [1], [An ERE matcher]) +-_LT_DECL([], [FGREP], [1], [A literal string matcher]) +-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +-AC_SUBST([GREP]) +-]) +- +- +-# _LT_DECL_OBJDUMP +-# -------------- +-# If we don't have a new enough Autoconf to choose the best objdump +-# available, choose the one first in the user's PATH. +-m4_defun([_LT_DECL_OBJDUMP], +-[AC_CHECK_TOOL(OBJDUMP, objdump, false) +-test -z "$OBJDUMP" && OBJDUMP=objdump +-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +-AC_SUBST([OBJDUMP]) +-]) +- +-# _LT_DECL_DLLTOOL +-# ---------------- +-# Ensure DLLTOOL variable is set. +-m4_defun([_LT_DECL_DLLTOOL], +-[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +-AC_SUBST([DLLTOOL]) +-]) +- +-# _LT_DECL_SED +-# ------------ +-# Check for a fully-functional sed program, that truncates +-# as few characters as possible. Prefer GNU sed if found. +-m4_defun([_LT_DECL_SED], +-[AC_PROG_SED +-test -z "$SED" && SED=sed +-Xsed="$SED -e 1s/^X//" +-_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], +- [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +-])# _LT_DECL_SED +- +-m4_ifndef([AC_PROG_SED], [ +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_SED. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +- +-m4_defun([AC_PROG_SED], +-[AC_MSG_CHECKING([for a sed that does not truncate output]) +-AC_CACHE_VAL(lt_cv_path_SED, +-[# Loop through the user's path and test for sed and gsed. +-# Then use that list of sed's as ones to test for truncation. +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for lt_ac_prog in sed gsed; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then +- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" +- fi +- done +- done +-done +-IFS=$as_save_IFS +-lt_ac_max=0 +-lt_ac_count=0 +-# Add /usr/xpg4/bin/sed as it is typically found on Solaris +-# along with /bin/sed that truncates output. +-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do +- test ! -f $lt_ac_sed && continue +- cat /dev/null > conftest.in +- lt_ac_count=0 +- echo $ECHO_N "0123456789$ECHO_C" >conftest.in +- # Check for GNU sed and select it if it is found. +- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then +- lt_cv_path_SED=$lt_ac_sed +- break +- fi +- while true; do +- cat conftest.in conftest.in >conftest.tmp +- mv conftest.tmp conftest.in +- cp conftest.in conftest.nl +- echo >>conftest.nl +- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break +- cmp -s conftest.out conftest.nl || break +- # 10000 chars as input seems more than enough +- test $lt_ac_count -gt 10 && break +- lt_ac_count=`expr $lt_ac_count + 1` +- if test $lt_ac_count -gt $lt_ac_max; then +- lt_ac_max=$lt_ac_count +- lt_cv_path_SED=$lt_ac_sed +- fi +- done +-done +-]) +-SED=$lt_cv_path_SED +-AC_SUBST([SED]) +-AC_MSG_RESULT([$SED]) +-])#AC_PROG_SED +-])#m4_ifndef +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_SED], []) +- +- +-# _LT_CHECK_SHELL_FEATURES +-# ------------------------ +-# Find out whether the shell is Bourne or XSI compatible, +-# or has some other useful features. +-m4_defun([_LT_CHECK_SHELL_FEATURES], +-[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +-# Try some XSI features +-xsi_shell=no +-( _lt_dummy="a/b/c" +- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ +- = c,a/b,b/c, \ +- && eval 'test $(( 1 + 1 )) -eq 2 \ +- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ +- && xsi_shell=yes +-AC_MSG_RESULT([$xsi_shell]) +-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) +- +-AC_MSG_CHECKING([whether the shell understands "+="]) +-lt_shell_append=no +-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ +- >/dev/null 2>&1 \ +- && lt_shell_append=yes +-AC_MSG_RESULT([$lt_shell_append]) +-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) +- +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- lt_unset=unset +-else +- lt_unset=false +-fi +-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl +- +-# test EBCDIC or ASCII +-case `echo X|tr X '\101'` in +- A) # ASCII based system +- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr +- lt_SP2NL='tr \040 \012' +- lt_NL2SP='tr \015\012 \040\040' +- ;; +- *) # EBCDIC based system +- lt_SP2NL='tr \100 \n' +- lt_NL2SP='tr \r\n \100\100' +- ;; +-esac +-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +-])# _LT_CHECK_SHELL_FEATURES +- +- +-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +-# ------------------------------------------------------ +-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +-m4_defun([_LT_PROG_FUNCTION_REPLACE], +-[dnl { +-sed -e '/^$1 ()$/,/^} # $1 /c\ +-$1 ()\ +-{\ +-m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +-test 0 -eq $? || _lt_function_replace_fail=: +-]) +- +- +-# _LT_PROG_REPLACE_SHELLFNS +-# ------------------------- +-# Replace existing portable implementations of several shell functions with +-# equivalent extended shell implementations where those features are available.. +-m4_defun([_LT_PROG_REPLACE_SHELLFNS], +-[if test x"$xsi_shell" = xyes; then +- _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl +- case ${1} in +- */*) func_dirname_result="${1%/*}${2}" ;; +- * ) func_dirname_result="${3}" ;; +- esac]) +- +- _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl +- func_basename_result="${1##*/}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl +- case ${1} in +- */*) func_dirname_result="${1%/*}${2}" ;; +- * ) func_dirname_result="${3}" ;; +- esac +- func_basename_result="${1##*/}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl +- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are +- # positional parameters, so assign one to ordinary parameter first. +- func_stripname_result=${3} +- func_stripname_result=${func_stripname_result#"${1}"} +- func_stripname_result=${func_stripname_result%"${2}"}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl +- func_split_long_opt_name=${1%%=*} +- func_split_long_opt_arg=${1#*=}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl +- func_split_short_opt_arg=${1#??} +- func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl +- case ${1} in +- *.lo) func_lo2o_result=${1%.lo}.${objext} ;; +- *) func_lo2o_result=${1} ;; +- esac]) +- +- _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) +- +- _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) +- +- _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +-fi +- +-if test x"$lt_shell_append" = xyes; then +- _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl +- func_quote_for_eval "${2}" +-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ +- eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) +- +- # Save a `func_append' function call where possible by direct use of '+=' +- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +- test 0 -eq $? || _lt_function_replace_fail=: +-else +- # Save a `func_append' function call even when '+=' is not available +- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +- test 0 -eq $? || _lt_function_replace_fail=: +-fi +- +-if test x"$_lt_function_replace_fail" = x":"; then +- AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +-fi +-]) +- +-# _LT_PATH_CONVERSION_FUNCTIONS +-# ----------------------------- +-# Determine which file name conversion functions should be used by +-# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +-# for certain cross-compile configurations and native mingw. +-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_MSG_CHECKING([how to convert $build file names to $host format]) +-AC_CACHE_VAL(lt_cv_to_host_file_cmd, +-[case $host in +- *-*-mingw* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 +- ;; +- *-*-cygwin* ) +- lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 +- ;; +- * ) # otherwise, assume *nix +- lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 +- ;; +- esac +- ;; +- *-*-cygwin* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin +- ;; +- *-*-cygwin* ) +- lt_cv_to_host_file_cmd=func_convert_file_noop +- ;; +- * ) # otherwise, assume *nix +- lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin +- ;; +- esac +- ;; +- * ) # unhandled hosts (and "normal" native builds) +- lt_cv_to_host_file_cmd=func_convert_file_noop +- ;; +-esac +-]) +-to_host_file_cmd=$lt_cv_to_host_file_cmd +-AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], +- [0], [convert $build file names to $host format])dnl +- +-AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +-AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +-[#assume ordinary cross tools, or native build. +-lt_cv_to_tool_file_cmd=func_convert_file_noop +-case $host in +- *-*-mingw* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 +- ;; +- esac +- ;; +-esac +-]) +-to_tool_file_cmd=$lt_cv_to_tool_file_cmd +-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], +- [0], [convert $build files to toolchain format])dnl +-])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch b/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch new file mode 100644 index 0000000..85dcf79 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch @@ -0,0 +1,32 @@ +am-utils-6.2 - fix NFSv3 access method return on non-existent mount point + +From: Ian Kent + +When the NFS v3 access method is called and there is no mount point +corresponding to the path ESTALE needs to be returned the kernel NFS +client so an NFS lookup will be done and the mount point re-mounted. + +If there is no map entry to mount the NFS v3 lookup method can then +return the failure. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index ef07a4a..85cf98c 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1239,9 +1239,9 @@ am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp) + if (!mp) { + post_op_obj = &result.res_u.fail.obj_attributes; + post_op_obj->attributes_follow = 0; +- result.status = nfs_error(ENOENT); ++ result.status = nfs_error(ESTALE); + if (amuDebug(D_TRACE)) +- plog(XLOG_DEBUG, "access_3: ENOENT"); ++ plog(XLOG_DEBUG, "access_3: ESTALE"); + } else { + nfsfattr *fattr = &mp->am_fattr; + am_fattr3 *fattr3; diff --git a/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch b/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch new file mode 100644 index 0000000..85b1801 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch @@ -0,0 +1,76 @@ +am-utils-6.2 - fix NFSv3 lookup dir attribute return value + +From: Ian Kent + +The NFS v3 lookup method, which returns attributes for the directory +containing the object to be looked up, used incorrect mount point +attributes which was causing unusual file system object visibility +problems. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 85cf98c..6a1b717 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -978,6 +978,29 @@ static void fattr_to_wcc_attr(nfsfattr *fattr, am_wcc_attr *wcc_attr) + nfstime_to_am_nfstime3(&fattr->na_ctime, &wcc_attr->ctime); + } + ++static nfsfattr *get_parent_fattr(am_node *mp) ++{ ++ nfsfattr *fattr; ++ ++ /* Set attributes to those of the parent only if this ++ * isn't topvol otherwise just use the mp attributes. ++ */ ++ fattr = &mp->am_fattr; ++ if (mp->am_parent && mp->am_parent->am_parent && ++ !(mp->am_parent->am_parent->am_flags & AMF_ROOT)) ++ fattr = &mp->am_parent->am_fattr; ++ ++ return fattr; ++} ++ ++static void parent_fattr_to_fattr3(am_node *mp, am_fattr3 *fattr3) ++{ ++ nfsfattr *fattr; ++ ++ fattr = get_parent_fattr(mp); ++ fattr_to_fattr3(fattr, fattr3); ++} ++ + static am_nfsstat3 return_estale_or_rofs(am_nfs_fh3 *fh, + am_pre_op_attr *pre_op, + am_post_op_attr *post_op) +@@ -1177,9 +1200,7 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + + /* dir attributes */ + post_op_dir->attributes_follow = 1; +- fattr = &mp->am_fattr; + fattr3 = &post_op_dir->am_post_op_attr_u.attributes; +- fattr_to_fattr3(fattr, fattr3); + + post_op_obj->attributes_follow = 0; + +@@ -1196,6 +1217,7 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + amd_stats.d_drops++; + return 0; + } ++ parent_fattr_to_fattr3(mp, fattr3); + result.status = nfs_error(error); + } else { + /* +@@ -1206,6 +1228,9 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + if (ap->am_ttl < mp->am_ttl) + ap->am_ttl = mp->am_ttl; + ++ /* dir attrs, update after mount */ ++ parent_fattr_to_fattr3(mp, fattr3); ++ + mp_to_fh3(ap, &result.res_u.ok.object); + + /* mount attributes */ diff --git a/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch b/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch new file mode 100644 index 0000000..8260cbf --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch @@ -0,0 +1,53 @@ +am-utils-6.2 - fix NFSv3 readdir post_op_dir attributes return + +From: Ian Kent + +The NFS v3 readdir method is expected to return the attributes of +the directory being read for both success and fail cases. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 6a1b717..00a1dc0 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1627,28 +1627,29 @@ am_nfs3_readdir_3_svc(am_READDIR3args *argp, struct svc_req *rqstp) + result.status = nfs_error(retry); + } else { + am_dirlist3 *list = &result.res_u.ok.reply; ++ nfsfattr *fattr; ++ am_fattr3 *fattr3; + am_nfsstat3 status; + + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "\treaddir_3(%s)", mp->am_path); + ++ fattr = &mp->am_fattr; ++ + status = mp->am_al->al_mnt->mf_ops->readdir(mp, + (voidp)&cookie, list, entries, count); + if (status == 0) { + post_op_dir = &result.res_u.ok.dir_attributes; +- nfsfattr *fattr; +- am_fattr3 *fattr3; +- +- fattr = &mp->am_fattr; +- fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + post_op_dir->attributes_follow = 1; +- fattr_to_fattr3(fattr, fattr3); ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + result.status = AM_NFS3_OK; + } else { + post_op_dir = &result.res_u.fail.dir_attributes; +- post_op_dir->attributes_follow = 0; ++ post_op_dir->attributes_follow = 1; ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + result.status = nfs_error(status); + } ++ fattr_to_fattr3(fattr, fattr3); + + mp->am_stats.s_readdir++; + } diff --git a/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch b/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch new file mode 100644 index 0000000..93b7c35 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch @@ -0,0 +1,62 @@ +am-utils-6.2 - fix NFSv3 unlink3_or_rmdir3() post_op attributes return + +From: Ian Kent + +The function unlink3_or_rmdir3() is called by both NFS v3 remove and +rmdir methods. Both of these methods require post op wcc attributes +to be returned but unlink3_or_rmdir3() was returning only the pre op +wcc attributes. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 00a1dc0..0a43b98 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1033,7 +1033,7 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + am_pre_op_attr *pre_op_dir = &wcc_data->before; + am_post_op_attr *post_op_dir = &wcc_data->after; + nfsfattr *fattr; +- am_wcc_attr *wcc_attr; ++ am_wcc_attr *pre_op_wcc_attr, *post_op_wcc_attr; + am_node *mp, *ap; + int retry; + +@@ -1050,12 +1050,17 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + goto out; + } + ++ post_op_dir->attributes_follow = 1; ++ post_op_wcc_attr = &post_op_dir->am_post_op_attr_u.attributes; ++ + pre_op_dir->attributes_follow = 1; ++ pre_op_wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes; ++ + fattr = &mp->am_fattr; +- wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes; +- fattr_to_wcc_attr(fattr, wcc_attr); ++ fattr_to_wcc_attr(fattr, pre_op_wcc_attr); + + if (mp->am_fattr.na_type != NFDIR) { ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = nfs_error(ENOTDIR); + goto out; + } +@@ -1075,9 +1080,14 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + */ + else if (retry == ENOENT) + retry = 0; ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = nfs_error(retry); + } else { + forcibly_timeout_mp(mp); ++ /* we can't wait for the expire so use the attributes as ++ * they are now for the post op wcc attributes. ++ */ ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = AM_NFS3_OK; + } + diff --git a/am-utils.conf b/am-utils.conf new file mode 100644 index 0000000..388e673 --- /dev/null +++ b/am-utils.conf @@ -0,0 +1,35 @@ +# +# amd default config file +# +# check amd.conf(5) man page for details about options in this file +# + +# GLOBAL OPTIONS SECTION +[ global ] +normalize_hostnames = no +print_pid = yes +pid_file = /var/run/amd.pid +restart_mounts = yes +auto_dir = /.automount +#log_file = /var/log/amd +log_file = syslog +log_options = all +#debug_options = all +plock = no +selectors_on_default = yes +print_version = no +# set map_type to "nis" for NIS maps, or comment it out to search for all +# types +map_type = file +search_path = /etc +browsable_dirs = yes +show_statfs_entries = no +fully_qualified_hosts = no +cache_duration = 300 +# Fedora doesn't support NFSv2, use the amd NFSv3 server. +auto_nfs_version = 3 + +# DEFINE AN AMD MOUNT POINT +[ /net ] +map_name = amd.net +map_type = file diff --git a/am-utils.init b/am-utils.init new file mode 100755 index 0000000..f508817 --- /dev/null +++ b/am-utils.init @@ -0,0 +1,95 @@ +#!/bin/bash +# +# Version: 1.3 +# +# chkconfig: - 72 28 +# description: Runs the automount daemon that mounts devices and NFS hosts \ +# on demand. +# processname: amd +# config: /etc/amd.conf +# + +# We require the /etc/amd.conf file, but supply it in the package, so it +# should always be there. +[ -f /etc/amd.conf ] || exit $? +[ -f /etc/sysconfig/amd ] || exit $? + +# Source function library. +. /etc/init.d/functions + +# Recover AMDOPTS from /etc/sysconfig/amd. +if [ -f /etc/sysconfig/amd ] ; then + . /etc/sysconfig/amd +fi + +RETVAL=0 +prog=amd +amd=/usr/sbin/amd + +start() { + echo -n $"Starting $prog: " + daemon $amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS + RETVAL=$? + echo + [ $RETVAL = 0 ] && touch /var/lock/subsys/amd + return $RETVAL +} + +stop() { + echo -n $"Stopping $prog: " + killproc $amd -TERM + # this part is from wait4amd2die + delay=3 + count=10 + i=1 + maxcount=`expr $count + 1` + while [ $i != $maxcount ]; do + # run amq + /usr/sbin/amq > /dev/null 2>&1 + if [ $? != 0 ] + then + # amq failed to run (because amd is dead) + rm -f /var/lock/subsys/amd /var/run/amd.pid + echo + return 0 + fi + sleep $delay + i=`expr $i + 1` + done + failure $"amd shutdown" + echo + echo "amd is still up" + return 1 +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status $amd + RETVAL=$? + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/amd ]; then + stop + start + fi + ;; + reload) + action $"Reloading $prog:" killall -HUP $amd + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" + exit 1 +esac + +exit $RETVAL diff --git a/am-utils.net.map b/am-utils.net.map new file mode 100644 index 0000000..2307d9a --- /dev/null +++ b/am-utils.net.map @@ -0,0 +1,5 @@ +localhost type:=link;fs:=/ +* host==${key};type:=link;fs:=/ \ + hostd==${key};type:=link;fs:=/ \ + fs:=${autodir}/${rhost}/root/${rfs};type:=host;rhost:=${key};rfs:=/;opts:=nosuid,nodev + diff --git a/am-utils.spec b/am-utils.spec new file mode 100644 index 0000000..ac52fe8 --- /dev/null +++ b/am-utils.spec @@ -0,0 +1,584 @@ +Summary: Automount utilities including an updated version of Amd +Name: am-utils +Version: 6.2.0 +%define upstream_version 6.2 +Release: 5%{?dist} +License: BSD +Epoch: 5 +Group: System Environment/Daemons +URL: http://am-utils.org +# Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git +Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{upstream_version}.tar.gz +Source1: am-utils.init +Source2: am-utils.conf +Source3: am-utils.sysconf +Source4: am-utils.net.map + +BuildRequires: gdbm-devel +BuildRequires: hesiod-devel +BuildRequires: openldap-devel +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: bison +BuildRequires: flex +BuildRequires: tcp_wrappers-devel +BuildRequires: texinfo +BuildRequires: gcc +BuildRequires: m4 + +Requires: portmap +Requires: grep +Requires: gawk +Requires: findutils + +Requires(pre): /bin/grep +Requires(post): /sbin/install-info +Requires(preun): /sbin/install-info + +# Fix problems with possible future libtool rebases (#1181698) +Patch1: am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch + +Patch2: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch +Patch3: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch +Patch4: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch +Patch5: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch +Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch + +# The git changelog entry doesn't say why autoconf 2.69 is required. +# Changing the check to require RHEL-6 autoconf version 2.63 does +# build cleanly and appears to work ok. Perhaps the libtool change +# (ie. patch1 above) resolves whatever problem that commit was meant +# to deal with. +Patch7: am-utils-6.2-allow-old-autoconf-version.patch + +# Not needed since autoreconf/libtool appear to do this automatically +# Leaving it set doesn't appear to be a problem so leave it set in +# case this changes. +%global _hardened_build 1 + +# We need to filter out some perl requirements for now. +%define _use_internal_dependency_generator 0 +%define old_find_requires %{__find_requires} + +%description +Am-utils includes an updated version of Amd, the popular BSD +automounter. An automounter is a program which maintains a cache +of mounted filesystems. Filesystems are mounted when they are +first referenced by the user and unmounted after a certain period of +inactivity. Amd supports a variety of filesystems, including NFS, UFS, +CD-ROMS and local drives. + +You should install am-utils if you need a program for automatically +mounting and unmounting filesystems. + +%prep +%setup -q -n %{name}-%{upstream_version} + +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 + +./bootstrap + +find_requires=%{old_find_requires} +echo "$find_requires | grep -v lostaltmail.conf" > find-requires +chmod +x find-requires + +%build +%configure \ + --enable-shared \ + --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ + --enable-libs="-lnsl -lresolv" \ + --enable-debug + +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +make %{?_smp_flags} + +%install +%makeinstall + +mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/{sysconfig,rc.d/init.d} + +install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd +install -m 600 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf +install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig/amd +install -m 640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.net + +gzip -q9f ${RPM_BUILD_ROOT}/%{_infodir}/*info* +mkdir -p ${RPM_BUILD_ROOT}/.automount + +rm -f ${RPM_BUILD_ROOT}/usr/sbin/ctl-amd + +# add symlinks to shared libs +/sbin/ldconfig -n ${RPM_BUILD_ROOT}/%{_libdir} + +# deprecated files +for I in %{_libdir}/libamu.a \ + %{_libdir}/libamu.la \ + %{_libdir}/libamu.so \ + %{_infodir}/dir \ + %{_sysconfdir}/amd.conf-sample \ + %{_sysconfdir}/lostaltmail.conf-sample; do + + rm -f $RPM_BUILD_ROOT$I +done + +%define __find_requires %{_builddir}/%{name}-%{version}/find-requires + +%pre +# Check if we have an old fashioned amd.conf and rename if to amd.net +if test "$1" -ne 0; then + if test -r /etc/amd.conf; then + if grep -v -q "auto_dir" /etc/amd.conf; then + if test ! -e /etc/amd.net; then + mv -f /etc/amd.conf /etc/amd.net + fi + fi + fi +fi + +%post +/sbin/ldconfig +/sbin/chkconfig --add amd +if [ -f %{_infodir}/am-utils.info.gz ]; then + /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : +fi + +%preun +if [ $1 -eq 0 ]; then + # Package removal, not upgrade + if [ -f %{_infodir}/am-utils.info.gz ]; then + /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : + fi + /sbin/service amd stop >/dev/null 2>&1 + /sbin/chkconfig --del amd +fi + +%postun +if [ $1 -ge 1 ]; then + /sbin/service amd condrestart >/dev/null 2>&1 +fi +/sbin/ldconfig + +%files +%doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample +%dir /.automount +%{_bindir}/pawd +%{_sbindir}/* +%{_mandir}/man[58]/* +%{_mandir}/man1/pawd.1* +%config(noreplace) %{_sysconfdir}/amd.net +%config(noreplace) %{_sysconfdir}/amd.conf +%config(noreplace) %{_sysconfdir}/sysconfig/amd +%config /etc/rc.d/init.d/amd +%{_infodir}/*info*.gz +%{_libdir}/libamu.so* + +%changelog +* Sun Jan 24 2015 Ian Kent - 5:6.2.0-5 +- update to upstream source release 6.2. +- use starting revision 5 to ensure package will update from previous package. +- add configure option enable-debug so we can get logs of any problems with + the new amd NFS v3 service. +- remove BuildRequires: perl-Unicode-EastAsianWidth. +- move libtool macro functions from m4/macros to m4 and delete. +- add debug log trace to NFSv3 readdirplus +- fix NFSv3 access method return on non-existent mount point. +- fix NFSv3 lookup dir attribute return value. +- fix NFSv3 readdir post_op_dir attributes return. +- fix NFSv3 unlink3_or_rmdir3() post_op attributes return. +- fix mtime update on NFSv3 lookup. +- allow old autoconf version. + +* Tue Jun 16 2015 Fedora Release Engineering - 5:6.2.0-4.20140906gitbb13dea6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Jun 12 2015 Ian Kent - 5:6.2.0-3.20140906gitbb13dea6 +- add build requires for gcc and m4. + +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-2.20140906gitbb13dea6 +- fix libtool-2.4.4 build failure, bug 1181698. + +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 +- add perl-Unicode-EastAsianWidth to BuildRequires. + +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 +- Update am-utils to current git to get needed NFSv3 functionality. + +* Fri Aug 15 2014 Fedora Release Engineering - 5:6.1.5-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 5:6.1.5-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri Mar 20 2014 Ian Kent - 5:6.1.5-30 +- bz1074376 - am-utils will no longer start due to missing NFSv2 + - dont background autofs umount. + - check fh on umount succeeded. + - handle ENOENT umount return for autofs mounts. + - fix get_nfs_version() message. + - fix debug log deadlock. + - linux umount wait on ebusy. + - make sure to remove nodes in the proper order when going down. + - fix handle failed umount on exit. + - fix autofs proto version define. + +* Sat Aug 03 2013 Fedora Release Engineering - 5:6.1.5-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun Apr 28 2013 Ian Kent - 5:6.1.5-28 +- texinfo documentation build fixes. + +* Sun Apr 28 2013 Ian Kent - 5:6.1.5-27 +- bz955445 - am-utils package should be built with PIE flags + - use _hardened_build flag. + +* Mon Feb 18 2013 Ian Kent - 5:6.1.5-26 +- add BuildRequires for texinfo. + +* Wed Feb 13 2013 Fedora Release Engineering - 5:6.1.5-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Aug 22 2012 Václav Pavlín - 5:6.1.5-24 +- Scriptlets replaced with new systemd macros (#850023) + +* Wed Jul 18 2012 Fedora Release Engineering - 5:6.1.5-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jan 24 2012 Karel Zak - 5:6.1.5-22 +- fix #784235 - amd immediately exits after starting with systemd + +* Thu Jan 12 2012 Fedora Release Engineering - 5:6.1.5-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Sep 09 2011 Tom Callaway - 5:6.1.5-20 +- add missing systemd scriptlets + +* Thu Sep 08 2011 Tom Callaway - 5:6.1.5-19 +- convert from sysvinit to systemd + +* Mon Feb 07 2011 Fedora Release Engineering - 5:6.1.5-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Oct 6 2010 Karel Zak 5:6.1.5-17 +- fix #602938 - am-utils fails on f13 with amfs_toplvl_mount +- fix #640383 - am-utils doesn't work in Fedora 13 + +* Mon Mar 1 2010 Karel Zak 5:6.1.5-16 +- fix #566711 - am-utils: incorrect use of tcp_wrapper + +* Wed Feb 24 2010 Karel Zak 5:6.1.5-15 +- fix #523221 - initscript collected problems LSB-compilant + +* Fri Jul 24 2009 Fedora Release Engineering - 5:6.1.5-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 5:6.1.5-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Dec 2 2008 Karel Zak 5:6.1.5-12 +- fix #450754 - Amd does not work with 2.6.25 (thanks to Philippe Troin) + +* Thu May 29 2008 Karel Zak 5:6.1.5-11 +- review & cleanup init script + +* Thu May 29 2008 Karel Zak 5:6.1.5-10 +- fix #435420 - CVE-2008-1078 am-utils: insecure usage of temporary files + +* Tue May 20 2008 Karel Zak 5:6.1.5-9 +- spec file cleanup according to rpmlint +- fix autotools stuff + +* Tue Feb 19 2008 Fedora Release Engineering - 5:6.1.5-8 +- Autorebuild for GCC 4.3 + +* Wed Dec 05 2007 Release Engineering - 6.1.5-7 + - Rebuild for deps + +* Tue Mar 13 2007 Karel Zak 5:6.1.5-6 +- fix #223675 - am-utils: non-failsafe install-info +- fix #231843 - missing build dependency on tcp_wrappers +- cleanup spec file + +* Mon Dec 18 2006 Karel Zak 5:6.1.5-5 +- fix #219437 - amd: stopping service will pop up an error dialog in + system-config-services app. +- fix build (m4 stuff) of the package (UTS_RELEASE macro has been removed + from the latest kernel-headers) + +* Tue Aug 24 2006 Karel Zak 5:6.1.5-4 +- fix #203193 - tmpfile usage +- fix #202180 - amd service doesn't work + +* Wed Jul 12 2006 Jesse Keating - 5:6.1.5-3 +- rebuild +- Add missing br flex + +* Thu Jun 01 2006 Peter Vrabec 5:6.1.5-2 +- force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h + check in configure fails on s390x + +* Mon May 29 2006 Peter Vrabec 5:6.1.5-1 +- upgrade +- add build depency + +* Fri Feb 10 2006 Jesse Keating - 5:6.1.3-1.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 5:6.1.3-1.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Fri Oct 20 2005 Peter Vrabec 6.1.3-1 +- upgrade + +* Wed Oct 04 2005 Peter Vrabec 6.1.2.1-1 +- upgrade +- fix amd shutdown(#158268,#54246) +- enhancement, /host/localhost and /host/ + are symlinks to / (#11843) + +* Thu Aug 25 2005 Peter Vrabec 6.1.1-2 +- use generic linux/nfs_mount.h check + +* Fri Aug 19 2005 Peter Vrabec 6.1.1-1 +- upgrade 6.1.1 + +* Wed Aug 17 2005 Peter Vrabec 6.0.9-13 +- fix the regression introduced with (#143118) fix + +* Thu Mar 24 2005 Peter Vrabec 6.0.9-12 +- fix the am-utils part of #143118 by implementing the util-linux + mtab locking scheme into am-utils automounter, patch and testing + by Daniel Berrange , improved locking + algorithm by (which allows for several + hundred or even thousand of parallel makes to finish + successfully and keep /etc/mtab in sync with /proc/mounts as well) + +* Thu Mar 17 2005 Peter Vrabec +- rebuild by gcc4 + +* Tue Oct 12 2004 Adrian Havill 6.0.9-10 +- cleanup %%pre script so amd.conf won't get stat()ed if it doesn't + exist (#126656) + +* Wed Sep 1 2004 Nalin Dahyabhai 6.0.9-9 +- really fix %%preun this time + +* Tue Aug 31 2004 Nalin Dahyabhai 6.0.9-8 +- rebuild + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Mon Mar 15 2004 Nalin Dahyabhai +- fix incorrect invocation of test in %%pre and %%preun + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Nov 11 2003 Nalin Dahyabhai 6.0.9-5 +- change permissions on /etc/sysconfig/amd from 0755 to 0644 (#109681) + +* Tue Aug 5 2003 Elliot Lee 6.0.9-4 +- Fix libtool + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Tue Feb 04 2003 Florian La Roche +- add symlink to shared lib + +* Fri Jan 31 2003 Nalin Dahyabhai 6.0.9-1 +- update to 6.0.9 +- disable RPM's internal dependency calculation so that we can filter out + dependencies which are expected to be filled in by the site administrator + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Tue Jan 7 2003 Nalin Dahyabhai 6.0.8-3 +- rebuild + +* Wed Oct 30 2002 Nalin Dahyabhai 6.0.8-1 +- update to 6.0.8 + +* Tue Aug 27 2002 Nalin Dahyabhai 6.0.7-9 +- rebuild + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Wed May 29 2002 Nalin Dahyabhai 6.0.7-7 +- adjust the perl reqs so that the lostaltmail config files aren't required + by RPM + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Thu May 9 2002 Nalin Dahyabhai 6.0.7-5 +- rebuild in new environment + +* Fri Feb 22 2002 Nalin Dahyabhai 6.0.7-4 +- rebuild in new environment + +* Sat Jan 26 2002 Jeff Johnson +- add Provides: to white out certain perl Requires: + +* Wed Jan 23 2002 Nalin Dahyabhai 6.0.7-2 +- rebuild in new environment +- require gdbm-devel at build-time instead of db1-devel + +* Thu Sep 6 2001 Nalin Dahyabhai 6.0.7-1 +- update to 6.0.7, fixing EIO on access bugs (#53251) +- back out nfs3 patch; no longer needed for current kernels +- don't explicitly strip binaries; let the buildroot policies handle it + +* Wed Jul 18 2001 Nalin Dahyabhai +- rebuild + +* Mon Jun 25 2001 Nalin Dahyabhai +- add BuildPrereq: db1-devel (#44987) +- use FHS macros +- return error codes correctly from init script (#44597) + +* Tue May 22 2001 Nalin Dahyabhai +- update to 6.0.6 + +* Sat Apr 7 2001 Nalin Dahyabhai +- update to 6.0.5 +- remove /net from the default MOUNTPTS + +* Tue Mar 13 2001 Nalin Dahyabhai +- use MOUNTPTS when starting + +* Fri Mar 2 2001 Nalin Dahyabhai +- rebuild in new environment + +* Wed Feb 14 2001 Nalin Dahyabhai +- redo i18n for the init script (#24082) + +* Tue Jan 23 2001 Nalin Dahyabhai +- re-do workaround from advice from the am-utils maintainers +- redo i18n for the init script + +* Sat Jan 20 2001 Nalin Dahyabhai +- work around clash with nfs3_fh definition in 2.4 + +* Tue Jan 16 2001 Nalin Dahyabhai +- gettextize the init script (#24087) + +* Tue Dec 19 2000 Nalin Dahyabhai +- add ldconfig to %%postun +- chuck the hesiod patch -- new bind-utils doesn't have the support for it + +* Fri Sep 8 2000 Nalin Dahyabhai +- rebuild in new environment + +* Sat Jul 15 2000 Bill Nottingham +- move initscript back + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Thu Jul 6 2000 Nalin Dahyabhai +- only create /var/lock/subsys/amd if startup succeeds +- revamp shutdown procedure to minimize time spent just spinning +- change initscripts dependency to /etc/init.d + +* Tue Jul 4 2000 Florian La Roche +- delete noreplace from initscript + +* Wed Jun 28 2000 Nalin Dahyabhai +- fix postun script +- add requires: initscripts + +* Tue Jun 27 2000 Nalin Dahyabhai +- remove unnecessary libamu.so symlink + +* Mon Jun 26 2000 Nalin Dahyabhai +- move init script to /etc/init.d +- add URL: tag + +* Wed Jun 21 2000 Preston Brown +- noreplace config files +- gracefully stop/restart service + +* Fri Jun 16 2000 Matt Wilson +- FHS paths +- 6.0.4 snapshot (as it builds against kernel 2.4 headers) + +* Wed Feb 16 2000 Cristian Gafton +- version 6.0.3 +- enhance init script to be more wait4amd2die-like +- make default map type to be file (#9185) +- get rid of the kludges + +* Thu Feb 03 2000 Cristian Gafton +- man pages are compressed +- version 6.0.2 +- fix descriptions + +* Mon Sep 13 1999 Cristian Gafton +- version 6.0.1 final + +* Tue Aug 24 1999 Cristian Gafton +- remove the noldap patch +- add amd.net file as the default config map file +- change the config file to teh new config file format instead of a + simple map file name. +- try to avoid some damage with a new %%pre script +- prereq grep now +- modify the init file so it calls amd -F /etc/amd.conf now + +* Tue Aug 24 1999 Bill Nottingham +- update to 6.0.1s11 + +* Fri Jun 19 1999 Bill Nottingham +- don't run by default + +* Mon May 31 1999 Kenneth Skaar +- Fixed amd -F core dump and related dumps by other programs + +* Thu Apr 08 1999 Preston Brown +- kill -HUP on reload, restart does a real restart. + +* Fri Mar 26 1999 Bill Nottingham +- twiddle an echo in initscript + +* Tue Mar 23 1999 Cristian Gafton +- version 6.0 proper +- Serial:1 because to enforce versioning + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 6) + +* Wed Jan 06 1999 Cristian Gafton +- rebuild for glibc 2.1 +- strip all binaries + +* Thu Aug 13 1998 Jeff Johnson +- add missing ':' to default 'opts:=nosuid,nodev' +- install info pages + +* Mon Jul 13 1998 Cristian Gafton +- added the NIS support that the broken configure script failed to detect + +* Tue May 05 1998 Cristian Gafton +- disabled autofs support on alpha +- run ldconfig in postinstall + +* Mon May 04 1998 Cristian Gafton +- new package to replace the old and unmaintained amd diff --git a/am-utils.sysconf b/am-utils.sysconf new file mode 100644 index 0000000..ee8b718 --- /dev/null +++ b/am-utils.sysconf @@ -0,0 +1,3 @@ +#MOUNTPTS='/net /etc/amd.net' +ADIR=/.automount +AMDOPTS= diff --git a/sources b/sources index e69de29..8907255 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +4b2ada9cadd24f8a231601274d6fb036 am-utils-6.2.tar.gz From 509a4c2f2a3b55d1be375700a8a2a71f67b54e3a Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 24 Jan 2016 11:29:42 +0800 Subject: [PATCH 088/157] - fix changelog date. --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index ac52fe8..51fbe20 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -182,7 +182,7 @@ fi %{_libdir}/libamu.so* %changelog -* Sun Jan 24 2015 Ian Kent - 5:6.2.0-5 +* Sun Jan 24 2016 Ian Kent - 5:6.2.0-5 - update to upstream source release 6.2. - use starting revision 5 to ensure package will update from previous package. - add configure option enable-debug so we can get logs of any problems with From af7fe5db289e7b8a76c8501a81b7c0114d0b81a5 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 2 Feb 2016 09:08:05 +0800 Subject: [PATCH 089/157] - fix permissions on amd.service and amd.conf. --- am-utils.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 96dcf86..6a9696c 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 6%{?dist} +Release: 7%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -104,8 +104,8 @@ make %{?_smp_flags} mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig mkdir -p ${RPM_BUILD_ROOT}%{_unitdir} -install -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_unitdir}/ -install -m 600 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf +install -m 644 %{SOURCE1} ${RPM_BUILD_ROOT}/%{_unitdir}/ +install -m 644 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig/amd install -m 640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.net @@ -190,6 +190,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Feb 2 2016 Ian Kent - 5:6.2.0-7 +- fix permissions on amd.service and amd.conf. + * Thu Dec 17 2015 Ian Kent - 5:6.2.0-6 - fix revision 5 changelog entry. From 73b0d64247b92c5521e42e7ec2029a11be084c30 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 2 Feb 2016 09:49:47 +0800 Subject: [PATCH 090/157] - fix permissions on amd.conf. --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 51fbe20..ae34cfe 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 5%{?dist} +Release: 6%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -107,7 +107,7 @@ make %{?_smp_flags} mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/{sysconfig,rc.d/init.d} install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd -install -m 600 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf +install -m 644 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig/amd install -m 640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.net @@ -182,6 +182,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Feb 2 2016 Ian Kent - 5:6.2.0-6 +- fix permissions on amd.conf. + * Sun Jan 24 2016 Ian Kent - 5:6.2.0-5 - update to upstream source release 6.2. - use starting revision 5 to ensure package will update from previous package. From ae02c67f2a9a404e1ad1e78e25d1051ae10a32ae Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 2 Feb 2016 10:24:33 +0800 Subject: [PATCH 091/157] - fix systemd unit dependencies. --- am-utils.spec | 5 ++++- amd.service | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 6a9696c..1758da3 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 7%{?dist} +Release: 8%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -190,6 +190,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Feb 2 2016 Ian Kent - 5:6.2.0-8 +- fix systemd unit dependencies. + * Tue Feb 2 2016 Ian Kent - 5:6.2.0-7 - fix permissions on amd.service and amd.conf. diff --git a/amd.service b/amd.service index b078c9e..0ca9365 100644 --- a/amd.service +++ b/amd.service @@ -1,6 +1,7 @@ [Unit] Description=automount daemon that mounts devices and NFS hosts on demand -After=syslog.target network.target +After=syslog.target network.target network-online.target rpcbind.service +Wants=network-online.target rpcbind.service [Service] EnvironmentFile=-/etc/sysconfig/amd From cafd3ce99f229be866b0d956f102c68d2882438b Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 2 Feb 2016 10:30:07 +0800 Subject: [PATCH 092/157] - Update Requires: portmap to Requires: rpcbind. --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 1758da3..7a2ca91 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 8%{?dist} +Release: 9%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -28,7 +28,7 @@ BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 -Requires: portmap +Requires: rpcbind Requires: grep Requires: gawk Requires: findutils @@ -190,6 +190,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Feb 2 2016 Ian Kent - 5:6.2.0-9 +- Update Requires: portmap to Requires: rpcbind. + * Tue Feb 2 2016 Ian Kent - 5:6.2.0-8 - fix systemd unit dependencies. From a7c448a5ec5d67bd54ba8322d0026383656fefbb Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Wed, 3 Feb 2016 16:08:11 +0000 Subject: [PATCH 093/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 7a2ca91..7659a22 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 9%{?dist} +Release: 10%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -190,6 +190,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Feb 03 2016 Fedora Release Engineering - 5:6.2.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + * Tue Feb 2 2016 Ian Kent - 5:6.2.0-9 - Update Requires: portmap to Requires: rpcbind. From ad1caf6dd63178e1b779cc01b338ff33337ddbeb Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 29 Feb 2016 15:41:32 +0800 Subject: [PATCH 094/157] - fix Linux NFS recognition of umounts. --- ...fix-Linux-NFS-recognition-of-umounts.patch | 39 +++++++++++++++++++ am-utils.spec | 8 +++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch diff --git a/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch b/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch new file mode 100644 index 0000000..6513e19 --- /dev/null +++ b/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch @@ -0,0 +1,39 @@ +am-utils-6.2 - fix Linux NFS recognition of umounts + +From: Ian Kent + +Recent Linux NFS uses a simulated attibute cache change detection +method based on ctime. Consequenty the amd use of mtime for this +doesn't work properly for some kernel versions. + +The problem seen with some kernel versions is a failure to recognize +umounts. + +Updating the parent ctime in step with mtime during umount appears +to fix the problem. + +Signed-off-by: Ian Kent +--- + amd/autil.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/amd/autil.c b/amd/autil.c +index cd9514d..efd18ef 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -709,10 +709,13 @@ am_unmounted(am_node *mp) + --mp->am_parent->am_fattr.na_nlink; + + /* +- * Update mtime of parent node ++ * Update mtime and ctime of parent node (as ctime is needed for some ++ * Linux NFS kernel versions to properly recognize attribute changes). + */ +- if (mp->am_parent && mp->am_parent->am_al->al_mnt) ++ if (mp->am_parent && mp->am_parent->am_al->al_mnt) { + clocktime(&mp->am_parent->am_fattr.na_mtime); ++ mp->am_parent->am_fattr.na_ctime = mp->am_parent->am_fattr.na_mtime; ++ } + + if (mp->am_parent && (mp->am_flags & AMF_REMOUNT)) { + char *fname = xstrdup(mp->am_name); diff --git a/am-utils.spec b/am-utils.spec index ae34cfe..7f3270f 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 6%{?dist} +Release: 7%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -52,6 +52,8 @@ Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch # to deal with. Patch7: am-utils-6.2-allow-old-autoconf-version.patch +Patch8: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -82,6 +84,7 @@ mounting and unmounting filesystems. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 ./bootstrap @@ -182,6 +185,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Feb 29 2016 Ian Kent - 5:6.2.0-7 +- fix Linux NFS recognition of umounts. + * Tue Feb 2 2016 Ian Kent - 5:6.2.0-6 - fix permissions on amd.conf. From 41f4e18791c2cd4496bebd392a89b80bdd878758 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 29 Feb 2016 16:26:12 +0800 Subject: [PATCH 095/157] - fix Linux NFS recognition of umounts and add systemd dependency on nfs-lock.service. --- ...fix-Linux-NFS-recognition-of-umounts.patch | 39 +++++++++++++++++++ am-utils.spec | 9 ++++- amd.service | 2 +- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch diff --git a/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch b/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch new file mode 100644 index 0000000..6513e19 --- /dev/null +++ b/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch @@ -0,0 +1,39 @@ +am-utils-6.2 - fix Linux NFS recognition of umounts + +From: Ian Kent + +Recent Linux NFS uses a simulated attibute cache change detection +method based on ctime. Consequenty the amd use of mtime for this +doesn't work properly for some kernel versions. + +The problem seen with some kernel versions is a failure to recognize +umounts. + +Updating the parent ctime in step with mtime during umount appears +to fix the problem. + +Signed-off-by: Ian Kent +--- + amd/autil.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/amd/autil.c b/amd/autil.c +index cd9514d..efd18ef 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -709,10 +709,13 @@ am_unmounted(am_node *mp) + --mp->am_parent->am_fattr.na_nlink; + + /* +- * Update mtime of parent node ++ * Update mtime and ctime of parent node (as ctime is needed for some ++ * Linux NFS kernel versions to properly recognize attribute changes). + */ +- if (mp->am_parent && mp->am_parent->am_al->al_mnt) ++ if (mp->am_parent && mp->am_parent->am_al->al_mnt) { + clocktime(&mp->am_parent->am_fattr.na_mtime); ++ mp->am_parent->am_fattr.na_ctime = mp->am_parent->am_fattr.na_mtime; ++ } + + if (mp->am_parent && (mp->am_flags & AMF_REMOUNT)) { + char *fname = xstrdup(mp->am_name); diff --git a/am-utils.spec b/am-utils.spec index 7a2ca91..05ab597 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 9%{?dist} +Release: 10%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -50,6 +50,8 @@ Patch4: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch Patch5: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch +Patch7: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -79,6 +81,7 @@ mounting and unmounting filesystems. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 ./bootstrap @@ -190,6 +193,10 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Feb 29 2016 Ian Kent - 5:6.2.0-10 +- fix Linux NFS recognition of umounts. +- add systemd dependency on nfs-lock.service. + * Tue Feb 2 2016 Ian Kent - 5:6.2.0-9 - Update Requires: portmap to Requires: rpcbind. diff --git a/amd.service b/amd.service index 0ca9365..e20da2e 100644 --- a/amd.service +++ b/amd.service @@ -1,7 +1,7 @@ [Unit] Description=automount daemon that mounts devices and NFS hosts on demand After=syslog.target network.target network-online.target rpcbind.service -Wants=network-online.target rpcbind.service +Wants=network-online.target rpcbind.service nfs-lock.service [Service] EnvironmentFile=-/etc/sysconfig/amd From c3388d3bddc9ffc6be2f8c41392f195c09f143c8 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 29 Feb 2016 16:29:53 +0800 Subject: [PATCH 096/157] - bump revision as a result of previous merge. --- am-utils.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index f450d6b..9e17832 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 10%{?dist} +Release: 11%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -193,7 +193,7 @@ fi %{_libdir}/libamu.so* %changelog -* Mon Feb 29 2016 Ian Kent - 5:6.2.0-10 +* Mon Feb 29 2016 Ian Kent - 5:6.2.0-11 - fix Linux NFS recognition of umounts. - add systemd dependency on nfs-lock.service. From eb3e2668919e84e7f8147bff590e1c0c9b996ab7 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 4 Mar 2016 06:52:13 +0800 Subject: [PATCH 097/157] - fix unusual NFS kernel client problem and add several fixes. --- ...-NFSv3-nfs_quick_reply-functionality.patch | 241 ++++++++++++++++++ ...6.2-add-NFSv3-rpc-request-validation.patch | 127 +++++++++ ..._nfs_xprt-and-put_nfs_xprt-functions.patch | 170 ++++++++++++ ...-wcc-attr-usage-in-unlink3_or_rmdir3.patch | 52 ++++ ...ls-6.2-use-linux-libtirpc-if-present.patch | 93 +++++++ ..._nfs_xprt-and-put_nfs_xprt-functions.patch | 60 +++++ am-utils.spec | 25 +- 7 files changed, 767 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch create mode 100644 am-utils-6.2-add-NFSv3-rpc-request-validation.patch create mode 100644 am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch create mode 100644 am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch create mode 100644 am-utils-6.2-use-linux-libtirpc-if-present.patch create mode 100644 am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch diff --git a/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch b/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch new file mode 100644 index 0000000..8aaf65f --- /dev/null +++ b/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch @@ -0,0 +1,241 @@ +am-utils-6.2 - add NFSv3 nfs_quick_reply() functionality + +From: Ian Kent + +The implementation of the NFS v3 server does not use the hack needed +by the nfs_quick_reply() function. + +Now that saving the current transort for later use by nfs_quick_reply() +avoids concurrency races it should be ok to use it. + +Signed-off-by: Ian Kent +--- + amd/nfs_prot_svc.c | 13 +++++ + amd/nfs_subr.c | 137 +++++++++++++++++++++++++++++++++++++++++----------- + 2 files changed, 120 insertions(+), 30 deletions(-) + +diff --git a/amd/nfs_prot_svc.c b/amd/nfs_prot_svc.c +index cbde172..29b7551 100644 +--- a/amd/nfs_prot_svc.c ++++ b/amd/nfs_prot_svc.c +@@ -180,7 +180,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + xdr_result = (xdrproc_t) xdr_diropres; + local = (nfssvcproc_t) nfsproc_lookup_2_svc; + /* +- * Cheap way to pass transp down to amfs_auto_lookuppn so it can ++ * Cheap way to pass transp down to amfs_auto_lookup so it can + * be stored in the am_node structure and later used for + * quick_reply(). + */ +@@ -327,6 +327,8 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + xdrproc_t _xdr_argument, _xdr_result; + nfssvcproc_t local; + ++ current_transp = NULL; ++ + switch (rqstp->rq_proc) { + case AM_NFS3_NULL: + _xdr_argument = (xdrproc_t) xdr_void; +@@ -350,6 +352,12 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + _xdr_argument = (xdrproc_t) xdr_am_LOOKUP3args; + _xdr_result = (xdrproc_t) xdr_am_LOOKUP3res; + local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_lookup_3_svc; ++ /* ++ * Cheap way to pass transp down to amfs_auto_lookup so it can ++ * be stored in the am_node structure and later used for ++ * quick_reply(). ++ */ ++ current_transp = transp; + break; + + case AM_NFS3_ACCESS: +@@ -476,6 +484,9 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + } + + result = (*local) (&argument, rqstp); ++ ++ current_transp = NULL; ++ + if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { + svcerr_systemerr (transp); + } +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 07d960d..a383618 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -87,6 +87,9 @@ struct am_fh3 { + }; + + /* forward declarations */ ++static int nfs_quick_reply2(am_node *mp, int error); ++static int nfs_quick_reply3(am_node *mp, int error); ++ + /* converting am-filehandles to mount-points */ + static am_node *fh_to_mp3(am_nfs_fh *fhp, int *rp, int vop); + static am_node *fh_to_mp(am_nfs_fh *fhp); +@@ -255,46 +258,65 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp) + return &res; + } + +- + void + nfs_quick_reply(am_node *mp, int error) + { +- SVCXPRT *transp = mp->am_transp; +- nfsdiropres res; +- xdrproc_t xdr_result = (xdrproc_t) xdr_diropres; ++ int ret; + + /* +- * If there's a transp structure then we can reply to the client's +- * nfs lookup request. ++ * If there's no transp structure then we can't reply to the ++ * client's nfs lookup request. + */ +- if (transp) { +- if (error == 0) { +- /* +- * Construct a valid reply to a lookup request. Same +- * code as in nfsproc_lookup_2_svc() above. +- */ +- mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle); +- res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr; +- res.dr_status = NFS_OK; +- } else +- /* +- * Return the error that was passed to us. +- */ +- res.dr_status = nfs_error(error); ++ if (!mp->am_transp) ++ return; ++ ++ if (nfs_dispatcher == nfs_program_2) ++ ret = nfs_quick_reply2(mp, error); ++ else ++ ret = nfs_quick_reply3(mp, error); ++ ++ if (!ret) ++ svcerr_systemerr(mp->am_transp); ++ ++ /* ++ * Free up transp. It's only used for one reply. ++ */ ++ put_nfs_xprt(mp->am_transp); ++ mp->am_transp = NULL; ++ dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); ++} + ++ ++static int ++nfs_quick_reply2(am_node *mp, int error) ++{ ++ SVCXPRT *transp = mp->am_transp; ++ nfsdiropres res; ++ xdrproc_t xdr_result = (xdrproc_t) xdr_diropres; ++ int ret; ++ ++ if (error == 0) { + /* +- * Send off our reply ++ * Construct a valid reply to a lookup request. Same ++ * code as in nfsproc_lookup_2_svc() above. + */ +- if (!svc_sendreply(transp, (XDRPROC_T_TYPE) xdr_result, (SVC_IN_ARG_TYPE) & res)) +- svcerr_systemerr(transp); +- ++ mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle); ++ res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr; ++ res.dr_status = NFS_OK; ++ } else + /* +- * Free up transp. It's only used for one reply. ++ * Return the error that was passed to us. + */ +- put_nfs_xprt(mp->am_transp); +- mp->am_transp = NULL; +- dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); +- } ++ res.dr_status = nfs_error(error); ++ ++ /* ++ * Send off our reply ++ */ ++ ret = svc_sendreply(transp, ++ (XDRPROC_T_TYPE) xdr_result, ++ (SVC_IN_ARG_TYPE) & res); ++ ++ return ret; + } + + +@@ -890,6 +912,8 @@ mp_to_fh(am_node *mp, am_nfs_fh *fhp) + /* dlog("mp_to_fh: old filehandle: %d", fp->u.s.fhh_id); */ + } + } ++ ++ + void + mp_to_fh3(am_node *mp, am_nfs_fh3 *fhp) + { +@@ -1257,6 +1281,61 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + return &result; + } + ++ ++static int ++nfs_quick_reply3(am_node *mp, int error) ++{ ++ SVCXPRT *transp = mp->am_transp; ++ xdrproc_t xdr_result = (xdrproc_t) xdr_am_LOOKUP3res; ++ am_LOOKUP3res result; ++ am_post_op_attr *post_op_dir; ++ am_post_op_attr *post_op_obj; ++ int ret; ++ ++ if (error) { ++ /* ++ * Return the error that was passed to us. ++ */ ++ post_op_dir->attributes_follow = 0; ++ result.status = nfs_error(error); ++ } else { ++ post_op_dir = &result.res_u.ok.dir_attributes; ++ post_op_obj = &result.res_u.ok.obj_attributes; ++ am_fattr3 *fattr3; ++ nfsfattr *fattr; ++ ++ /* ++ * Construct a valid reply to a lookup request. Same ++ * code as in am_nfs3_lookup_3_svc() above. ++ */ ++ ++ /* dir attributes */ ++ post_op_dir->attributes_follow = 1; ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; ++ parent_fattr_to_fattr3(mp, fattr3); ++ ++ mp_to_fh3(mp, &result.res_u.ok.object); ++ ++ /* mount attributes */ ++ post_op_obj->attributes_follow = 1; ++ fattr = &mp->am_fattr; ++ fattr3 = &post_op_obj->am_post_op_attr_u.attributes; ++ fattr_to_fattr3(fattr, fattr3); ++ ++ result.status = AM_NFS3_OK; ++ } ++ ++ /* ++ * Send off our reply ++ */ ++ ret = svc_sendreply(transp, ++ (XDRPROC_T_TYPE) xdr_result, ++ (SVC_IN_ARG_TYPE) &result); ++ ++ return ret; ++} ++ ++ + am_ACCESS3res * + am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp) + { diff --git a/am-utils-6.2-add-NFSv3-rpc-request-validation.patch b/am-utils-6.2-add-NFSv3-rpc-request-validation.patch new file mode 100644 index 0000000..f5968e1 --- /dev/null +++ b/am-utils-6.2-add-NFSv3-rpc-request-validation.patch @@ -0,0 +1,127 @@ +am-utils-6.2 - add NFSv3 rpc request validation + +From: Ian Kent + +The NFS v2 internal server uses several validation checks for each +RPC request it receives, also add this validation for the NFS v3 +internal server. + +Signed-off-by: Ian Kent +--- + amd/nfs_prot_svc.c | 65 +++++++++++++++++++++++++++++++--------------------- + 1 file changed, 39 insertions(+), 26 deletions(-) + +diff --git a/amd/nfs_prot_svc.c b/amd/nfs_prot_svc.c +index 29b7551..cae12d4 100644 +--- a/amd/nfs_prot_svc.c ++++ b/amd/nfs_prot_svc.c +@@ -71,30 +71,9 @@ dispatcher_t nfs_dispatcher = nfs_program_2; + typedef char *(*nfssvcproc_t)(voidp, struct svc_req *); + + +-void +-nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) ++static int ++validate_rpc_request(struct svc_req *rqstp, SVCXPRT *transp) + { +- union { +- am_nfs_fh nfsproc_getattr_2_arg; +- nfssattrargs nfsproc_setattr_2_arg; +- nfsdiropargs nfsproc_lookup_2_arg; +- am_nfs_fh nfsproc_readlink_2_arg; +- nfsreadargs nfsproc_read_2_arg; +- nfswriteargs nfsproc_write_2_arg; +- nfscreateargs nfsproc_create_2_arg; +- nfsdiropargs nfsproc_remove_2_arg; +- nfsrenameargs nfsproc_rename_2_arg; +- nfslinkargs nfsproc_link_2_arg; +- nfssymlinkargs nfsproc_symlink_2_arg; +- nfscreateargs nfsproc_mkdir_2_arg; +- nfsdiropargs fsproc_rmdir_2_arg; +- nfsreaddirargs nfsproc_readdir_2_arg; +- am_nfs_fh nfsproc_statfs_2_arg; +- } argument; +- char *result; +- xdrproc_t xdr_argument, xdr_result; +- nfssvcproc_t local; +- + #ifdef HAVE_TRANSPORT_TYPE_TLI + /* + * On TLI systems we don't use an INET network type, but a "ticlts" (see +@@ -109,7 +88,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + extern int __rpc_get_local_uid(SVCXPRT *transp, uid_t *uid); + if (__rpc_get_local_uid(transp, &u) >= 0 && u != 0) { + plog(XLOG_WARNING, "ignoring request from UID %ld, must be 0", (long) u); +- return; ++ return 0; + } + # else /* not HAVE___RPC_GET_LOCAL_UID */ + dlog("cannot verify local uid for rpc request"); +@@ -126,7 +105,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + plog(XLOG_WARNING, "ignoring request from %s:%u, port not reserved", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port)); +- return; ++ return 0; + } + # endif /* MNT2_NFS_OPT_RESVPORT */ + /* if the address does not match, ignore the request */ +@@ -136,16 +115,47 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + plog(XLOG_WARNING, "ignoring request from %s:%u, not a local interface", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port)); ++ return 0; + } + } else { + plog(XLOG_WARNING, "ignoring request from %s:%u, expected %s", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port), + inet_dquad(dq2, sizeof(dq2), myipaddr.s_addr)); +- return; ++ return 0; + } + } + #endif /* not HAVE_TRANPORT_TYPE_TLI */ ++ return 1; ++} ++ ++ ++void ++nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) ++{ ++ union { ++ am_nfs_fh nfsproc_getattr_2_arg; ++ nfssattrargs nfsproc_setattr_2_arg; ++ nfsdiropargs nfsproc_lookup_2_arg; ++ am_nfs_fh nfsproc_readlink_2_arg; ++ nfsreadargs nfsproc_read_2_arg; ++ nfswriteargs nfsproc_write_2_arg; ++ nfscreateargs nfsproc_create_2_arg; ++ nfsdiropargs nfsproc_remove_2_arg; ++ nfsrenameargs nfsproc_rename_2_arg; ++ nfslinkargs nfsproc_link_2_arg; ++ nfssymlinkargs nfsproc_symlink_2_arg; ++ nfscreateargs nfsproc_mkdir_2_arg; ++ nfsdiropargs fsproc_rmdir_2_arg; ++ nfsreaddirargs nfsproc_readdir_2_arg; ++ am_nfs_fh nfsproc_statfs_2_arg; ++ } argument; ++ char *result; ++ xdrproc_t xdr_argument, xdr_result; ++ nfssvcproc_t local; ++ ++ if (!validate_rpc_request(rqstp, transp)) ++ return; + + current_transp = NULL; + +@@ -327,6 +337,9 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + xdrproc_t _xdr_argument, _xdr_result; + nfssvcproc_t local; + ++ if (!validate_rpc_request(rqstp, transp)) ++ return; ++ + current_transp = NULL; + + switch (rqstp->rq_proc) { diff --git a/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch b/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch new file mode 100644 index 0000000..56e3b55 --- /dev/null +++ b/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch @@ -0,0 +1,170 @@ +am-utils-6.2 - add get_nfs_xprt() and put_nfs_xprt() functions + +From: Ian Kent + +The nfs_quick_reply() functionality relies on taking a copy of the +current transport for later use. + +The problem with this is the context of the RPC message is kept in +the transport and if any RPC message arrives before nfs_quick_reply() +is called that context will be corrupted. + +So add a function get_nfs_xprt() to replace the current transport +with a new one returning the passed in transort so nfs_quick_reply() +can use it later. + +A function put_nfs_xprt() is also added (although not really needed +since it just destroys the now unused transport) for completeness. + +Signed-off-by: Ian Kent +--- + conf/transp/transp_sockets.c | 44 ++++++++++++++++++++++++++++++++++++++++ + conf/transp/transp_tli.c | 46 +++++++++++++++++++++++++++++++++++++++++- + include/am_utils.h | 2 ++ + 3 files changed, 91 insertions(+), 1 deletion(-) + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index 6326007..98f79c8 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -45,6 +45,7 @@ + #include + #include + ++static int soNFS = RPC_ANYSOCK; + + /* + * find the IP address that can be used to connect to the local host +@@ -273,9 +274,52 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* + return 3; + } + ++ soNFS = *soNFSp; ++ + return 0; /* all is well */ + } + ++/* ++ * Get a pointer to the current NFS SVCXPRT and replace it ++ * with a new one. ++ */ ++SVCXPRT * ++get_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ SVCXPRT *newxprt; ++ int newfd; ++ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return NULL; ++ ++ newfd = dup(soNFS); ++ if (newfd < 0) ++ return NULL; ++ ++ xprt_unregister(nfs_xprt); ++ newxprt = svcudp_create(newfd); ++ if (!newxprt) { ++ plog(XLOG_FATAL, "Can't switch to new transport"); ++ xprt_register(nfs_xprt); ++ close(newfd); ++ return NULL; ++ } ++ ++ soNFS = newfd; ++ ++ return nfs_xprt; ++} ++ ++/* ++ * Destroy a transport previously obtained by get_nfs_xprt(). ++ */ ++void put_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return; ++ ++ svc_destroy(nfs_xprt); ++} + + /* + * Create the amq service for amd (both TCP and UDP) +diff --git a/conf/transp/transp_tli.c b/conf/transp/transp_tli.c +index d26a511..ea565cc 100644 +--- a/conf/transp/transp_tli.c ++++ b/conf/transp/transp_tli.c +@@ -45,7 +45,8 @@ + #include + #include + +-struct netconfig *nfsncp; ++struct netconfig *nfsncp = NULL; ++static int soNFS = RPC_ANYSOCK; + + + /* +@@ -456,9 +457,52 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* + return 1; + } + ++ soNFS = *soNFSp; ++ + return 0; /* all is well */ + } + ++/* ++ * Get a pointer to the current NFS SVCXPRT and replace it ++ * with a new one. ++ */ ++SVCXPRT * ++get_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ SVCXPRT *newxprt; ++ int newfd; ++ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return NULL; ++ ++ newfd = dup(soNFS); ++ if (newfd < 0) ++ return NULL; ++ ++ xprt_unregister(nfs_xprt); ++ newxprt = svc_tli_create(newfd, nfsncp, NULL, 0, 0); ++ if (!newxprt) { ++ plog(XLOG_FATAL, "Can't switch to new transport"); ++ xprt_register(nfs_xprt); ++ close(newfd); ++ return NULL; ++ } ++ ++ soNFS = newfd; ++ ++ return nfs_xprt; ++} ++ ++/* ++ * Destroy a transport previously obtained by get_nfs_xprt(). ++ */ ++void put_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return; ++ ++ svc_destroy(nfs_xprt); ++} + + /* + * Bind to preferred AMQ port. +diff --git a/include/am_utils.h b/include/am_utils.h +index 0de881a..ff13c26 100644 +--- a/include/am_utils.h ++++ b/include/am_utils.h +@@ -378,6 +378,8 @@ extern void compute_nfs_args(void *nap, mntent_t *mntp, int genflags, struct net + extern void destroy_nfs_args(void *nap, u_long nfs_version); + extern int create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, struct netconfig **udp_amqncpp, int *tcp_soAMQp, SVCXPRT **tcp_amqpp, struct netconfig **tcp_amqncpp, u_short preferred_amq_port); + extern int create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (*dispatch_fxn)(struct svc_req *rqstp, SVCXPRT *transp), u_long nfs_version); ++extern SVCXPRT *get_nfs_xprt(SVCXPRT *nfs_xprt); ++extern void put_nfs_xprt(SVCXPRT *nfs_xprt); + extern int amu_svc_register(SVCXPRT *, u_long, u_long, void (*)(struct svc_req *, SVCXPRT *), u_long, struct netconfig *); + + #ifdef HAVE_TRANSPORT_TYPE_TLI diff --git a/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch b/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch new file mode 100644 index 0000000..6239c9f --- /dev/null +++ b/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch @@ -0,0 +1,52 @@ +am-utils-6.2 - fix wcc attr usage in unlink3_or_rmdir3() + +From: Ian Kent + +The definition of the wcc post op attributes should be am_fattr3 not +am_wcc_attr in unlink3_or_rmdir3(). + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index a383618..b88a40c 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1058,7 +1058,8 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + am_pre_op_attr *pre_op_dir = &wcc_data->before; + am_post_op_attr *post_op_dir = &wcc_data->after; + nfsfattr *fattr; +- am_wcc_attr *pre_op_wcc_attr, *post_op_wcc_attr; ++ am_wcc_attr *pre_op_wcc_attr; ++ am_fattr3 *post_op_wcc_attr; + am_node *mp, *ap; + int retry; + +@@ -1085,7 +1086,7 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + fattr_to_wcc_attr(fattr, pre_op_wcc_attr); + + if (mp->am_fattr.na_type != NFDIR) { +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = nfs_error(ENOTDIR); + goto out; + } +@@ -1105,14 +1106,14 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + */ + else if (retry == ENOENT) + retry = 0; +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = nfs_error(retry); + } else { + forcibly_timeout_mp(mp); + /* we can't wait for the expire so use the attributes as + * they are now for the post op wcc attributes. + */ +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = AM_NFS3_OK; + } + diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch new file mode 100644 index 0000000..1649b54 --- /dev/null +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -0,0 +1,93 @@ +am-utils-6.2 - use Linux libtirpc if present + +From: Ian Kent + +For Linux systems, if the header files and shared libraries of libtirpc +are present use them instead of the glibc RPC implementation. + +Signed-off-by: Ian Kent +--- + Makefile.am | 3 ++- + configure.ac | 4 ++++ + include/am_compat.h | 8 ++++++-- + m4/macros/check_linux_libtirpc.m4 | 13 +++++++++++++ + 4 files changed, 25 insertions(+), 3 deletions(-) + create mode 100644 m4/macros/check_linux_libtirpc.m4 + +diff --git a/Makefile.am b/Makefile.am +index bae4615..e094e95 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -146,7 +146,8 @@ EXTRA_DIST_M4 = \ + m4/macros/type_xdrproc_t.m4 \ + m4/macros/type_xfs_args.m4 \ + m4/macros/type_yp_order_outorder.m4 \ +- m4/macros/with_addon.m4 ++ m4/macros/with_addon.m4 \ ++ m4/macros/check_linux_libtirpc.m4 + + EXTRA_DIST_CONF = \ + conf/autofs/autofs_default.h \ +diff --git a/configure.ac b/configure.ac +index ce61925..98b444d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -222,6 +222,9 @@ dnl lots of code. So I am forced to use a special purpose macro that sets + dnl the libraries based on the OS. Sigh. -Erez. + AMU_CHECK_OS_LIBS + ++dnl use Linux libtirpc if possible ++AMU_CHECK_LIBTIRPC ++ + dnl librpc and librpcsvc are needed on Solaris + AC_CHECK_LIB(rpc, clnt_sperrno) + AC_CHECK_LIB(rpcsvc, xdr_fhandle) +@@ -433,6 +436,7 @@ AC_CHECK_HEADERS( \ + arpa/nameser.h \ + arpa/inet.h \ + bsd/rpc/rpc.h \ ++ tirpc/netconfig.h \ + cdfs/cdfsmount.h \ + cdfs/cdfs_mount.h \ + fs/udf/udf_mount.h \ +diff --git a/include/am_compat.h b/include/am_compat.h +index 3463f3f..d6826fc 100644 +--- a/include/am_compat.h ++++ b/include/am_compat.h +@@ -454,11 +454,15 @@ struct hsfs_args { + /* + * Define a dummy struct netconfig for non-TLI systems + */ +-#if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H) ++#if !defined(HAVE_NETCONFIG_H) ++# if !defined(HAVE_SYS_NETCONFIG_H) ++# if !defined(HAVE_TIRPC_NETCONFIG_H) + struct netconfig { + int dummy; + }; +-#endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */ ++# endif /* not HAVE_TIRPC_NETCONFIG_H */ ++# endif /* not HAVE_SYS_NETCONFIG_H */ ++#endif /* not HAVE_NETCONFIG_H */ + + /* some OSs don't define INADDR_NONE and assume it's unsigned -1 */ + #ifndef INADDR_NONE +diff --git a/m4/macros/check_linux_libtirpc.m4 b/m4/macros/check_linux_libtirpc.m4 +new file mode 100644 +index 0000000..918423c +--- /dev/null ++++ b/m4/macros/check_linux_libtirpc.m4 +@@ -0,0 +1,13 @@ ++dnl ###################################################################### ++dnl Check for Linux libtirpc library ++AC_DEFUN([AMU_CHECK_LIBTIRPC],[ ++TIRPC_CPPFLAGS="" ++TIRPC_LIBS="" ++ ++AC_CHECK_HEADER(tirpc/netconfig.h,[ ++ TIRPC_CPPFLAGS="-I/usr/include/tirpc" ++ AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) ++ AC_CHECK_LIB(tirpc, clnt_tli_create, [TIRPC_LIBS="-ltirpc"], [TIRPC_CPPFLAGS=""])]) ++ AMU_CFLAGS="$ANU_CFLAGS $TIRPC_CPPFLAGS" ++ LIBS="$LIBS $TIRPC_LIBS" ++]) diff --git a/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch b/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch new file mode 100644 index 0000000..8594739 --- /dev/null +++ b/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch @@ -0,0 +1,60 @@ +am-utils-6.2 - use new get_nfs_xprt() and put_nfs_xprt() functions + +From: Ian Kent + +The nfs_quick_reply() function needs to know the current RPC transport +outside of the NFS LOOKUP method call. It needs this to reply to the +NFS LOOKUP call that initiated the mount. + +Now there are functions that avoid transport corruption if another +request comes in during the backgroud mount make nfs_quick_reply() +use them. + +Signed-off-by: Ian Kent +--- + amd/amfs_generic.c | 3 +-- + amd/map.c | 2 +- + amd/nfs_subr.c | 3 ++- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index c352a32..86d0ab7 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -1129,8 +1129,7 @@ amfs_generic_mount_child(am_node *new_mp, int *error_return) + */ + if (current_transp && !new_mp->am_transp) { + dlog("Saving RPC transport for %s", new_mp->am_path); +- new_mp->am_transp = (SVCXPRT *) xmalloc(sizeof(SVCXPRT)); +- *(new_mp->am_transp) = *current_transp; ++ new_mp->am_transp = get_nfs_xprt(current_transp); + } + if (error && new_mp->am_al && new_mp->am_al->al_mnt && + (new_mp->am_al->al_mnt->mf_ops == &amfs_error_ops)) +diff --git a/amd/map.c b/amd/map.c +index 0d404cf..bcb2156 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -471,7 +471,7 @@ free_map(am_node *mp) + XFREE(mp->am_name); + XFREE(mp->am_path); + XFREE(mp->am_pref); +- XFREE(mp->am_transp); ++ put_nfs_xprt(mp->am_transp); + + if (mp->am_al) + free_loc(mp->am_al); +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 0a43b98..07d960d 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -291,7 +291,8 @@ nfs_quick_reply(am_node *mp, int error) + /* + * Free up transp. It's only used for one reply. + */ +- XFREE(mp->am_transp); ++ put_nfs_xprt(mp->am_transp); ++ mp->am_transp = NULL; + dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); + } + } diff --git a/am-utils.spec b/am-utils.spec index 9e17832..05d86ba 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 11%{?dist} +Release: 12%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -27,11 +27,13 @@ BuildRequires: systemd-units BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 +BuildRequires: libtirpc-devel Requires: rpcbind Requires: grep Requires: gawk Requires: findutils +Requires: libtirpc Requires(pre): /bin/grep Requires(post): /sbin/install-info @@ -51,6 +53,12 @@ Patch5: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch Patch7: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch +Patch8: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch9: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch10: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch +Patch11: am-utils-6.2-add-NFSv3-rpc-request-validation.patch +Patch12: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch +Patch13: am-utils-6.2-use-linux-libtirpc-if-present.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -82,6 +90,12 @@ mounting and unmounting filesystems. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 ./bootstrap @@ -193,6 +207,15 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Mar 2 2016 Ian Kent - 5:6.2.0-12 +- add get_nfs_xprt() and put_nfs_xprt() functions. +- use new get_nfs_xprt() and put_nfs_xprt() functions. +- add NFSv3 nfs_quick_reply() functionality. +- use libtirpc instead of glibc RPC. +- add NFSv3 rpc request validation. +- fix wcc attr usage in unlink3_or_rmdir3(). +- use Linux libtirpc if present. + * Mon Feb 29 2016 Ian Kent - 5:6.2.0-11 - fix Linux NFS recognition of umounts. - add systemd dependency on nfs-lock.service. From c9b3376b09667faeab31afebed88480dbb2aef12 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 4 Mar 2016 07:05:39 +0800 Subject: [PATCH 098/157] - fix changelog comments on latest change. --- am-utils.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 05d86ba..8e8c4b0 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -211,7 +211,6 @@ fi - add get_nfs_xprt() and put_nfs_xprt() functions. - use new get_nfs_xprt() and put_nfs_xprt() functions. - add NFSv3 nfs_quick_reply() functionality. -- use libtirpc instead of glibc RPC. - add NFSv3 rpc request validation. - fix wcc attr usage in unlink3_or_rmdir3(). - use Linux libtirpc if present. From 18135a43ff2226f6dfea01a18568515df363e120 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Fri, 4 Mar 2016 11:35:46 +0800 Subject: [PATCH 099/157] - fix unusual NFS kernel client problem and add several fixes. --- ...-NFSv3-nfs_quick_reply-functionality.patch | 241 ++++++++++++++++++ ...6.2-add-NFSv3-rpc-request-validation.patch | 127 +++++++++ ..._nfs_xprt-and-put_nfs_xprt-functions.patch | 170 ++++++++++++ ...-wcc-attr-usage-in-unlink3_or_rmdir3.patch | 52 ++++ ...ls-6.2-use-linux-libtirpc-if-present.patch | 93 +++++++ ..._nfs_xprt-and-put_nfs_xprt-functions.patch | 60 +++++ am-utils.spec | 24 +- 7 files changed, 766 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch create mode 100644 am-utils-6.2-add-NFSv3-rpc-request-validation.patch create mode 100644 am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch create mode 100644 am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch create mode 100644 am-utils-6.2-use-linux-libtirpc-if-present.patch create mode 100644 am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch diff --git a/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch b/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch new file mode 100644 index 0000000..8aaf65f --- /dev/null +++ b/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch @@ -0,0 +1,241 @@ +am-utils-6.2 - add NFSv3 nfs_quick_reply() functionality + +From: Ian Kent + +The implementation of the NFS v3 server does not use the hack needed +by the nfs_quick_reply() function. + +Now that saving the current transort for later use by nfs_quick_reply() +avoids concurrency races it should be ok to use it. + +Signed-off-by: Ian Kent +--- + amd/nfs_prot_svc.c | 13 +++++ + amd/nfs_subr.c | 137 +++++++++++++++++++++++++++++++++++++++++----------- + 2 files changed, 120 insertions(+), 30 deletions(-) + +diff --git a/amd/nfs_prot_svc.c b/amd/nfs_prot_svc.c +index cbde172..29b7551 100644 +--- a/amd/nfs_prot_svc.c ++++ b/amd/nfs_prot_svc.c +@@ -180,7 +180,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + xdr_result = (xdrproc_t) xdr_diropres; + local = (nfssvcproc_t) nfsproc_lookup_2_svc; + /* +- * Cheap way to pass transp down to amfs_auto_lookuppn so it can ++ * Cheap way to pass transp down to amfs_auto_lookup so it can + * be stored in the am_node structure and later used for + * quick_reply(). + */ +@@ -327,6 +327,8 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + xdrproc_t _xdr_argument, _xdr_result; + nfssvcproc_t local; + ++ current_transp = NULL; ++ + switch (rqstp->rq_proc) { + case AM_NFS3_NULL: + _xdr_argument = (xdrproc_t) xdr_void; +@@ -350,6 +352,12 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + _xdr_argument = (xdrproc_t) xdr_am_LOOKUP3args; + _xdr_result = (xdrproc_t) xdr_am_LOOKUP3res; + local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_lookup_3_svc; ++ /* ++ * Cheap way to pass transp down to amfs_auto_lookup so it can ++ * be stored in the am_node structure and later used for ++ * quick_reply(). ++ */ ++ current_transp = transp; + break; + + case AM_NFS3_ACCESS: +@@ -476,6 +484,9 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + } + + result = (*local) (&argument, rqstp); ++ ++ current_transp = NULL; ++ + if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { + svcerr_systemerr (transp); + } +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 07d960d..a383618 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -87,6 +87,9 @@ struct am_fh3 { + }; + + /* forward declarations */ ++static int nfs_quick_reply2(am_node *mp, int error); ++static int nfs_quick_reply3(am_node *mp, int error); ++ + /* converting am-filehandles to mount-points */ + static am_node *fh_to_mp3(am_nfs_fh *fhp, int *rp, int vop); + static am_node *fh_to_mp(am_nfs_fh *fhp); +@@ -255,46 +258,65 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp) + return &res; + } + +- + void + nfs_quick_reply(am_node *mp, int error) + { +- SVCXPRT *transp = mp->am_transp; +- nfsdiropres res; +- xdrproc_t xdr_result = (xdrproc_t) xdr_diropres; ++ int ret; + + /* +- * If there's a transp structure then we can reply to the client's +- * nfs lookup request. ++ * If there's no transp structure then we can't reply to the ++ * client's nfs lookup request. + */ +- if (transp) { +- if (error == 0) { +- /* +- * Construct a valid reply to a lookup request. Same +- * code as in nfsproc_lookup_2_svc() above. +- */ +- mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle); +- res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr; +- res.dr_status = NFS_OK; +- } else +- /* +- * Return the error that was passed to us. +- */ +- res.dr_status = nfs_error(error); ++ if (!mp->am_transp) ++ return; ++ ++ if (nfs_dispatcher == nfs_program_2) ++ ret = nfs_quick_reply2(mp, error); ++ else ++ ret = nfs_quick_reply3(mp, error); ++ ++ if (!ret) ++ svcerr_systemerr(mp->am_transp); ++ ++ /* ++ * Free up transp. It's only used for one reply. ++ */ ++ put_nfs_xprt(mp->am_transp); ++ mp->am_transp = NULL; ++ dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); ++} + ++ ++static int ++nfs_quick_reply2(am_node *mp, int error) ++{ ++ SVCXPRT *transp = mp->am_transp; ++ nfsdiropres res; ++ xdrproc_t xdr_result = (xdrproc_t) xdr_diropres; ++ int ret; ++ ++ if (error == 0) { + /* +- * Send off our reply ++ * Construct a valid reply to a lookup request. Same ++ * code as in nfsproc_lookup_2_svc() above. + */ +- if (!svc_sendreply(transp, (XDRPROC_T_TYPE) xdr_result, (SVC_IN_ARG_TYPE) & res)) +- svcerr_systemerr(transp); +- ++ mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle); ++ res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr; ++ res.dr_status = NFS_OK; ++ } else + /* +- * Free up transp. It's only used for one reply. ++ * Return the error that was passed to us. + */ +- put_nfs_xprt(mp->am_transp); +- mp->am_transp = NULL; +- dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); +- } ++ res.dr_status = nfs_error(error); ++ ++ /* ++ * Send off our reply ++ */ ++ ret = svc_sendreply(transp, ++ (XDRPROC_T_TYPE) xdr_result, ++ (SVC_IN_ARG_TYPE) & res); ++ ++ return ret; + } + + +@@ -890,6 +912,8 @@ mp_to_fh(am_node *mp, am_nfs_fh *fhp) + /* dlog("mp_to_fh: old filehandle: %d", fp->u.s.fhh_id); */ + } + } ++ ++ + void + mp_to_fh3(am_node *mp, am_nfs_fh3 *fhp) + { +@@ -1257,6 +1281,61 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + return &result; + } + ++ ++static int ++nfs_quick_reply3(am_node *mp, int error) ++{ ++ SVCXPRT *transp = mp->am_transp; ++ xdrproc_t xdr_result = (xdrproc_t) xdr_am_LOOKUP3res; ++ am_LOOKUP3res result; ++ am_post_op_attr *post_op_dir; ++ am_post_op_attr *post_op_obj; ++ int ret; ++ ++ if (error) { ++ /* ++ * Return the error that was passed to us. ++ */ ++ post_op_dir->attributes_follow = 0; ++ result.status = nfs_error(error); ++ } else { ++ post_op_dir = &result.res_u.ok.dir_attributes; ++ post_op_obj = &result.res_u.ok.obj_attributes; ++ am_fattr3 *fattr3; ++ nfsfattr *fattr; ++ ++ /* ++ * Construct a valid reply to a lookup request. Same ++ * code as in am_nfs3_lookup_3_svc() above. ++ */ ++ ++ /* dir attributes */ ++ post_op_dir->attributes_follow = 1; ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; ++ parent_fattr_to_fattr3(mp, fattr3); ++ ++ mp_to_fh3(mp, &result.res_u.ok.object); ++ ++ /* mount attributes */ ++ post_op_obj->attributes_follow = 1; ++ fattr = &mp->am_fattr; ++ fattr3 = &post_op_obj->am_post_op_attr_u.attributes; ++ fattr_to_fattr3(fattr, fattr3); ++ ++ result.status = AM_NFS3_OK; ++ } ++ ++ /* ++ * Send off our reply ++ */ ++ ret = svc_sendreply(transp, ++ (XDRPROC_T_TYPE) xdr_result, ++ (SVC_IN_ARG_TYPE) &result); ++ ++ return ret; ++} ++ ++ + am_ACCESS3res * + am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp) + { diff --git a/am-utils-6.2-add-NFSv3-rpc-request-validation.patch b/am-utils-6.2-add-NFSv3-rpc-request-validation.patch new file mode 100644 index 0000000..f5968e1 --- /dev/null +++ b/am-utils-6.2-add-NFSv3-rpc-request-validation.patch @@ -0,0 +1,127 @@ +am-utils-6.2 - add NFSv3 rpc request validation + +From: Ian Kent + +The NFS v2 internal server uses several validation checks for each +RPC request it receives, also add this validation for the NFS v3 +internal server. + +Signed-off-by: Ian Kent +--- + amd/nfs_prot_svc.c | 65 +++++++++++++++++++++++++++++++--------------------- + 1 file changed, 39 insertions(+), 26 deletions(-) + +diff --git a/amd/nfs_prot_svc.c b/amd/nfs_prot_svc.c +index 29b7551..cae12d4 100644 +--- a/amd/nfs_prot_svc.c ++++ b/amd/nfs_prot_svc.c +@@ -71,30 +71,9 @@ dispatcher_t nfs_dispatcher = nfs_program_2; + typedef char *(*nfssvcproc_t)(voidp, struct svc_req *); + + +-void +-nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) ++static int ++validate_rpc_request(struct svc_req *rqstp, SVCXPRT *transp) + { +- union { +- am_nfs_fh nfsproc_getattr_2_arg; +- nfssattrargs nfsproc_setattr_2_arg; +- nfsdiropargs nfsproc_lookup_2_arg; +- am_nfs_fh nfsproc_readlink_2_arg; +- nfsreadargs nfsproc_read_2_arg; +- nfswriteargs nfsproc_write_2_arg; +- nfscreateargs nfsproc_create_2_arg; +- nfsdiropargs nfsproc_remove_2_arg; +- nfsrenameargs nfsproc_rename_2_arg; +- nfslinkargs nfsproc_link_2_arg; +- nfssymlinkargs nfsproc_symlink_2_arg; +- nfscreateargs nfsproc_mkdir_2_arg; +- nfsdiropargs fsproc_rmdir_2_arg; +- nfsreaddirargs nfsproc_readdir_2_arg; +- am_nfs_fh nfsproc_statfs_2_arg; +- } argument; +- char *result; +- xdrproc_t xdr_argument, xdr_result; +- nfssvcproc_t local; +- + #ifdef HAVE_TRANSPORT_TYPE_TLI + /* + * On TLI systems we don't use an INET network type, but a "ticlts" (see +@@ -109,7 +88,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + extern int __rpc_get_local_uid(SVCXPRT *transp, uid_t *uid); + if (__rpc_get_local_uid(transp, &u) >= 0 && u != 0) { + plog(XLOG_WARNING, "ignoring request from UID %ld, must be 0", (long) u); +- return; ++ return 0; + } + # else /* not HAVE___RPC_GET_LOCAL_UID */ + dlog("cannot verify local uid for rpc request"); +@@ -126,7 +105,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + plog(XLOG_WARNING, "ignoring request from %s:%u, port not reserved", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port)); +- return; ++ return 0; + } + # endif /* MNT2_NFS_OPT_RESVPORT */ + /* if the address does not match, ignore the request */ +@@ -136,16 +115,47 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + plog(XLOG_WARNING, "ignoring request from %s:%u, not a local interface", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port)); ++ return 0; + } + } else { + plog(XLOG_WARNING, "ignoring request from %s:%u, expected %s", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port), + inet_dquad(dq2, sizeof(dq2), myipaddr.s_addr)); +- return; ++ return 0; + } + } + #endif /* not HAVE_TRANPORT_TYPE_TLI */ ++ return 1; ++} ++ ++ ++void ++nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) ++{ ++ union { ++ am_nfs_fh nfsproc_getattr_2_arg; ++ nfssattrargs nfsproc_setattr_2_arg; ++ nfsdiropargs nfsproc_lookup_2_arg; ++ am_nfs_fh nfsproc_readlink_2_arg; ++ nfsreadargs nfsproc_read_2_arg; ++ nfswriteargs nfsproc_write_2_arg; ++ nfscreateargs nfsproc_create_2_arg; ++ nfsdiropargs nfsproc_remove_2_arg; ++ nfsrenameargs nfsproc_rename_2_arg; ++ nfslinkargs nfsproc_link_2_arg; ++ nfssymlinkargs nfsproc_symlink_2_arg; ++ nfscreateargs nfsproc_mkdir_2_arg; ++ nfsdiropargs fsproc_rmdir_2_arg; ++ nfsreaddirargs nfsproc_readdir_2_arg; ++ am_nfs_fh nfsproc_statfs_2_arg; ++ } argument; ++ char *result; ++ xdrproc_t xdr_argument, xdr_result; ++ nfssvcproc_t local; ++ ++ if (!validate_rpc_request(rqstp, transp)) ++ return; + + current_transp = NULL; + +@@ -327,6 +337,9 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + xdrproc_t _xdr_argument, _xdr_result; + nfssvcproc_t local; + ++ if (!validate_rpc_request(rqstp, transp)) ++ return; ++ + current_transp = NULL; + + switch (rqstp->rq_proc) { diff --git a/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch b/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch new file mode 100644 index 0000000..c24b20e --- /dev/null +++ b/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch @@ -0,0 +1,170 @@ +am-utils-6.2 - add get_nfs_xprt() and put_nfs_xprt() functions + +From: Ian Kent + +The nfs_quick_reply() functionality relies on taking a copy of the +current transport for later use. + +The problem with this is the context of the RPC message is kept in +the transport and if any RPC message arrives before nfs_quick_reply() +is called that context will be corrupted. + +So add a function get_nfs_xprt() to replace the current transport +with a new one returning the passed in transort so nfs_quick_reply() +can use it later. + +A function put_nfs_xprt() is also added (although not really needed +since it just destroys the now unused transport) for completeness. + +Signed-off-by: Ian Kent +--- + conf/transp/transp_sockets.c | 44 ++++++++++++++++++++++++++++++++++++++++ + conf/transp/transp_tli.c | 46 +++++++++++++++++++++++++++++++++++++++++- + include/am_utils.h | 2 ++ + 3 files changed, 91 insertions(+), 1 deletion(-) + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index 6326007..a6e0054 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -45,6 +45,7 @@ + #include + #include + ++static int soNFS = RPC_ANYSOCK; + + /* + * find the IP address that can be used to connect to the local host +@@ -273,9 +274,52 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* + return 3; + } + ++ soNFS = *soNFSp; ++ + return 0; /* all is well */ + } + ++/* ++ * Get a pointer to the current NFS SVCXPRT and replace it ++ * with a new one. ++ */ ++SVCXPRT * ++get_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ SVCXPRT *newxprt; ++ int newfd; ++ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return NULL; ++ ++ newfd = dup(soNFS); ++ if (newfd < 0) ++ return NULL; ++ ++ xprt_unregister(nfs_xprt); ++ newxprt = svcudp_create(newfd); ++ if (!newxprt) { ++ plog(XLOG_FATAL, "Can't switch to new transport"); ++ xprt_register(nfs_xprt); ++ close(newfd); ++ return NULL; ++ } ++ ++ soNFS = newfd; ++ ++ return nfs_xprt; ++} ++ ++/* ++ * Destroy a transport previously obtained by get_nfs_xprt(). ++ */ ++void put_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return; ++ ++ svc_destroy(nfs_xprt); ++} + + /* + * Create the amq service for amd (both TCP and UDP) +diff --git a/conf/transp/transp_tli.c b/conf/transp/transp_tli.c +index d26a511..bfdb526 100644 +--- a/conf/transp/transp_tli.c ++++ b/conf/transp/transp_tli.c +@@ -45,7 +45,8 @@ + #include + #include + +-struct netconfig *nfsncp; ++struct netconfig *nfsncp = NULL; ++static int soNFS = RPC_ANYSOCK; + + + /* +@@ -456,9 +457,52 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* + return 1; + } + ++ soNFS = *soNFSp; ++ + return 0; /* all is well */ + } + ++/* ++ * Get a pointer to the current NFS SVCXPRT and replace it ++ * with a new one. ++ */ ++SVCXPRT * ++get_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ SVCXPRT *newxprt; ++ int newfd; ++ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return NULL; ++ ++ newfd = dup(soNFS); ++ if (newfd < 0) ++ return NULL; ++ ++ xprt_unregister(nfs_xprt); ++ newxprt = svc_tli_create(newfd, nfsncp, NULL, 0, 0); ++ if (!newxprt) { ++ plog(XLOG_FATAL, "Can't switch to new transport"); ++ xprt_register(nfs_xprt); ++ close(newfd); ++ return NULL; ++ } ++ ++ soNFS = newfd; ++ ++ return nfs_xprt; ++} ++ ++/* ++ * Destroy a transport previously obtained by get_nfs_xprt(). ++ */ ++void put_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return; ++ ++ svc_destroy(nfs_xprt); ++} + + /* + * Bind to preferred AMQ port. +diff --git a/include/am_utils.h b/include/am_utils.h +index 0de881a..ff13c26 100644 +--- a/include/am_utils.h ++++ b/include/am_utils.h +@@ -378,6 +378,8 @@ extern void compute_nfs_args(void *nap, mntent_t *mntp, int genflags, struct net + extern void destroy_nfs_args(void *nap, u_long nfs_version); + extern int create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, struct netconfig **udp_amqncpp, int *tcp_soAMQp, SVCXPRT **tcp_amqpp, struct netconfig **tcp_amqncpp, u_short preferred_amq_port); + extern int create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (*dispatch_fxn)(struct svc_req *rqstp, SVCXPRT *transp), u_long nfs_version); ++extern SVCXPRT *get_nfs_xprt(SVCXPRT *nfs_xprt); ++extern void put_nfs_xprt(SVCXPRT *nfs_xprt); + extern int amu_svc_register(SVCXPRT *, u_long, u_long, void (*)(struct svc_req *, SVCXPRT *), u_long, struct netconfig *); + + #ifdef HAVE_TRANSPORT_TYPE_TLI diff --git a/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch b/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch new file mode 100644 index 0000000..6239c9f --- /dev/null +++ b/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch @@ -0,0 +1,52 @@ +am-utils-6.2 - fix wcc attr usage in unlink3_or_rmdir3() + +From: Ian Kent + +The definition of the wcc post op attributes should be am_fattr3 not +am_wcc_attr in unlink3_or_rmdir3(). + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index a383618..b88a40c 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1058,7 +1058,8 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + am_pre_op_attr *pre_op_dir = &wcc_data->before; + am_post_op_attr *post_op_dir = &wcc_data->after; + nfsfattr *fattr; +- am_wcc_attr *pre_op_wcc_attr, *post_op_wcc_attr; ++ am_wcc_attr *pre_op_wcc_attr; ++ am_fattr3 *post_op_wcc_attr; + am_node *mp, *ap; + int retry; + +@@ -1085,7 +1086,7 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + fattr_to_wcc_attr(fattr, pre_op_wcc_attr); + + if (mp->am_fattr.na_type != NFDIR) { +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = nfs_error(ENOTDIR); + goto out; + } +@@ -1105,14 +1106,14 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + */ + else if (retry == ENOENT) + retry = 0; +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = nfs_error(retry); + } else { + forcibly_timeout_mp(mp); + /* we can't wait for the expire so use the attributes as + * they are now for the post op wcc attributes. + */ +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = AM_NFS3_OK; + } + diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch new file mode 100644 index 0000000..1649b54 --- /dev/null +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -0,0 +1,93 @@ +am-utils-6.2 - use Linux libtirpc if present + +From: Ian Kent + +For Linux systems, if the header files and shared libraries of libtirpc +are present use them instead of the glibc RPC implementation. + +Signed-off-by: Ian Kent +--- + Makefile.am | 3 ++- + configure.ac | 4 ++++ + include/am_compat.h | 8 ++++++-- + m4/macros/check_linux_libtirpc.m4 | 13 +++++++++++++ + 4 files changed, 25 insertions(+), 3 deletions(-) + create mode 100644 m4/macros/check_linux_libtirpc.m4 + +diff --git a/Makefile.am b/Makefile.am +index bae4615..e094e95 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -146,7 +146,8 @@ EXTRA_DIST_M4 = \ + m4/macros/type_xdrproc_t.m4 \ + m4/macros/type_xfs_args.m4 \ + m4/macros/type_yp_order_outorder.m4 \ +- m4/macros/with_addon.m4 ++ m4/macros/with_addon.m4 \ ++ m4/macros/check_linux_libtirpc.m4 + + EXTRA_DIST_CONF = \ + conf/autofs/autofs_default.h \ +diff --git a/configure.ac b/configure.ac +index ce61925..98b444d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -222,6 +222,9 @@ dnl lots of code. So I am forced to use a special purpose macro that sets + dnl the libraries based on the OS. Sigh. -Erez. + AMU_CHECK_OS_LIBS + ++dnl use Linux libtirpc if possible ++AMU_CHECK_LIBTIRPC ++ + dnl librpc and librpcsvc are needed on Solaris + AC_CHECK_LIB(rpc, clnt_sperrno) + AC_CHECK_LIB(rpcsvc, xdr_fhandle) +@@ -433,6 +436,7 @@ AC_CHECK_HEADERS( \ + arpa/nameser.h \ + arpa/inet.h \ + bsd/rpc/rpc.h \ ++ tirpc/netconfig.h \ + cdfs/cdfsmount.h \ + cdfs/cdfs_mount.h \ + fs/udf/udf_mount.h \ +diff --git a/include/am_compat.h b/include/am_compat.h +index 3463f3f..d6826fc 100644 +--- a/include/am_compat.h ++++ b/include/am_compat.h +@@ -454,11 +454,15 @@ struct hsfs_args { + /* + * Define a dummy struct netconfig for non-TLI systems + */ +-#if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H) ++#if !defined(HAVE_NETCONFIG_H) ++# if !defined(HAVE_SYS_NETCONFIG_H) ++# if !defined(HAVE_TIRPC_NETCONFIG_H) + struct netconfig { + int dummy; + }; +-#endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */ ++# endif /* not HAVE_TIRPC_NETCONFIG_H */ ++# endif /* not HAVE_SYS_NETCONFIG_H */ ++#endif /* not HAVE_NETCONFIG_H */ + + /* some OSs don't define INADDR_NONE and assume it's unsigned -1 */ + #ifndef INADDR_NONE +diff --git a/m4/macros/check_linux_libtirpc.m4 b/m4/macros/check_linux_libtirpc.m4 +new file mode 100644 +index 0000000..918423c +--- /dev/null ++++ b/m4/macros/check_linux_libtirpc.m4 +@@ -0,0 +1,13 @@ ++dnl ###################################################################### ++dnl Check for Linux libtirpc library ++AC_DEFUN([AMU_CHECK_LIBTIRPC],[ ++TIRPC_CPPFLAGS="" ++TIRPC_LIBS="" ++ ++AC_CHECK_HEADER(tirpc/netconfig.h,[ ++ TIRPC_CPPFLAGS="-I/usr/include/tirpc" ++ AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) ++ AC_CHECK_LIB(tirpc, clnt_tli_create, [TIRPC_LIBS="-ltirpc"], [TIRPC_CPPFLAGS=""])]) ++ AMU_CFLAGS="$ANU_CFLAGS $TIRPC_CPPFLAGS" ++ LIBS="$LIBS $TIRPC_LIBS" ++]) diff --git a/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch b/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch new file mode 100644 index 0000000..8594739 --- /dev/null +++ b/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch @@ -0,0 +1,60 @@ +am-utils-6.2 - use new get_nfs_xprt() and put_nfs_xprt() functions + +From: Ian Kent + +The nfs_quick_reply() function needs to know the current RPC transport +outside of the NFS LOOKUP method call. It needs this to reply to the +NFS LOOKUP call that initiated the mount. + +Now there are functions that avoid transport corruption if another +request comes in during the backgroud mount make nfs_quick_reply() +use them. + +Signed-off-by: Ian Kent +--- + amd/amfs_generic.c | 3 +-- + amd/map.c | 2 +- + amd/nfs_subr.c | 3 ++- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index c352a32..86d0ab7 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -1129,8 +1129,7 @@ amfs_generic_mount_child(am_node *new_mp, int *error_return) + */ + if (current_transp && !new_mp->am_transp) { + dlog("Saving RPC transport for %s", new_mp->am_path); +- new_mp->am_transp = (SVCXPRT *) xmalloc(sizeof(SVCXPRT)); +- *(new_mp->am_transp) = *current_transp; ++ new_mp->am_transp = get_nfs_xprt(current_transp); + } + if (error && new_mp->am_al && new_mp->am_al->al_mnt && + (new_mp->am_al->al_mnt->mf_ops == &amfs_error_ops)) +diff --git a/amd/map.c b/amd/map.c +index 0d404cf..bcb2156 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -471,7 +471,7 @@ free_map(am_node *mp) + XFREE(mp->am_name); + XFREE(mp->am_path); + XFREE(mp->am_pref); +- XFREE(mp->am_transp); ++ put_nfs_xprt(mp->am_transp); + + if (mp->am_al) + free_loc(mp->am_al); +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 0a43b98..07d960d 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -291,7 +291,8 @@ nfs_quick_reply(am_node *mp, int error) + /* + * Free up transp. It's only used for one reply. + */ +- XFREE(mp->am_transp); ++ put_nfs_xprt(mp->am_transp); ++ mp->am_transp = NULL; + dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); + } + } diff --git a/am-utils.spec b/am-utils.spec index 7f3270f..0f4a585 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 7%{?dist} +Release: 8%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -26,11 +26,13 @@ BuildRequires: tcp_wrappers-devel BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 +BuildRequires: libtirpc-devel Requires: portmap Requires: grep Requires: gawk Requires: findutils +Requires: libtirpc Requires(pre): /bin/grep Requires(post): /sbin/install-info @@ -53,6 +55,12 @@ Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch Patch7: am-utils-6.2-allow-old-autoconf-version.patch Patch8: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch +Patch9: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch10: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch11: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch +Patch12: am-utils-6.2-add-NFSv3-rpc-request-validation.patch +Patch13: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch +Patch14: am-utils-6.2-use-linux-libtirpc-if-present.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -85,6 +93,12 @@ mounting and unmounting filesystems. %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 ./bootstrap @@ -185,6 +199,14 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Mar 2 2016 Ian Kent - 5:6.2.0-8 +- add get_nfs_xprt() and put_nfs_xprt() functions. +- use new get_nfs_xprt() and put_nfs_xprt() functions. +- add NFSv3 nfs_quick_reply() functionality. +- add NFSv3 rpc request validation. +- fix wcc attr usage in unlink3_or_rmdir3(). +- use Linux libtirpc if present. + * Mon Feb 29 2016 Ian Kent - 5:6.2.0-7 - fix Linux NFS recognition of umounts. From 4e72d9a68394cf333b16142f5e6213e496fe83ef Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Wed, 14 Sep 2016 17:33:58 +0800 Subject: [PATCH 100/157] - sync with updtream git and add a couple of bug fixes. --- am-utils-6.2-32-bit-fixes.patch | 145 +++++ ...as-for-unix-as-well-as-none-and-null.patch | 64 +++ ...lt-to-string-mount-options-for-NFSv4.patch | 58 ++ ...SEGV-on-amq-entries-that-print-times.patch | 19 + am-utils-6.2-Fix-nfs-args-setting-code.patch | 71 +++ ...6.2-Improve-debugging-for-unmounting.patch | 36 ++ ...al-return-an-0-on-error-1-on-success.patch | 530 ++++++++++++++++++ ...lly-no-ti-rpc-nfsv4-so-dont-send-one.patch | 45 ++ ...f-the-directory-too-since-it-changed.patch | 30 + ...d-more-debugging-in-the-unmount-path.patch | 94 ++++ ...le-ampersand-when-ampersand-is-meant.patch | 19 + ...r-assignment-warning-due-to-libtirpc.patch | 57 ++ ...not-comparison-in-get_ldap_timestamp.patch | 24 + am-utils-6.2-fix-umount-to-mount-race.patch | 54 ++ ...-make-sure-variables-are-initialized.patch | 20 + ...ommon_args-is-only-needed-with-DEBUG.patch | 26 + ...move-set-but-not-used-variable-again.patch | 26 + ...e-set-but-not-used-variable-mp_error.patch | 28 + ...2-remove-set-but-not-used-variable-s.patch | 38 ++ ...-6.2-remove-unused-function-show_map.patch | 22 + ...e-a-different-size-than-unsigned-int.patch | 59 ++ am-utils.spec | 93 ++- 22 files changed, 1545 insertions(+), 13 deletions(-) create mode 100644 am-utils-6.2-32-bit-fixes.patch create mode 100644 am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch create mode 100644 am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch create mode 100644 am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch create mode 100644 am-utils-6.2-Fix-nfs-args-setting-code.patch create mode 100644 am-utils-6.2-Improve-debugging-for-unmounting.patch create mode 100644 am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch create mode 100644 am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch create mode 100644 am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch create mode 100644 am-utils-6.2-add-more-debugging-in-the-unmount-path.patch create mode 100644 am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch create mode 100644 am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch create mode 100644 am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch create mode 100644 am-utils-6.2-fix-umount-to-mount-race.patch create mode 100644 am-utils-6.2-make-sure-variables-are-initialized.patch create mode 100644 am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch create mode 100644 am-utils-6.2-remove-set-but-not-used-variable-again.patch create mode 100644 am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch create mode 100644 am-utils-6.2-remove-set-but-not-used-variable-s.patch create mode 100644 am-utils-6.2-remove-unused-function-show_map.patch create mode 100644 am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch diff --git a/am-utils-6.2-32-bit-fixes.patch b/am-utils-6.2-32-bit-fixes.patch new file mode 100644 index 0000000..ac6cf1a --- /dev/null +++ b/am-utils-6.2-32-bit-fixes.patch @@ -0,0 +1,145 @@ +commit a6bbb7d9b098dacd2636925c232c630452e4b46e +Author: Christos Zoulas +Date: Sun Jan 18 18:03:37 2015 -0500 + + 32 bit fixes + +diff --git a/amd/amq_subr.c b/amd/amq_subr.c +index 8783611..86f0351 100644 +--- a/amd/amq_subr.c ++++ b/amd/amq_subr.c +@@ -528,6 +528,7 @@ xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead) + u_int len = 0; + int x; + char *n; ++ long modify; + + /* + * Compute length of list +@@ -552,7 +553,8 @@ xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead) + return (FALSE); + } + +- if (!xdr_long(xdrs, &m->modify)) { ++ modify = (long)m->modify; ++ if (!xdr_long(xdrs, &modify)) { + return (FALSE); + } + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index e463ff7..7192a6a 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1104,9 +1104,9 @@ am_nfs3_getattr_3_svc(am_GETATTR3args *argp, struct svc_req *rqstp) + result.status = AM_NFS3_OK; + + if (amuDebug(D_TRACE)) +- plog(XLOG_DEBUG, "\tstat(%s), size = %lu, mtime=%d.%d", ++ plog(XLOG_DEBUG, "\tstat(%s), size = %llu, mtime=%d.%d", + mp->am_path, +- (am_size3) fattr3->size, ++ (unsigned long long)fattr3->size, + (u_int) fattr3->mtime.seconds, + (u_int) fattr3->mtime.nseconds); + +diff --git a/amd/readdir.c b/amd/readdir.c +index 4b5e61b..57773a5 100644 +--- a/amd/readdir.c ++++ b/amd/readdir.c +@@ -635,7 +635,7 @@ static size_t needroom3(void) + + /* This one is called only if map is browsable */ + static int +-amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, ++amfs_readdir3_browsable(am_node *mp, voidp cookie, + am_dirlist3 *dp, am_entry3 *ep, u_int count, + int fully_browsable) + { +@@ -647,7 +647,8 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + dp->eof = FALSE; /* assume readdir not done */ + + if (amuDebug(D_READDIR)) +- plog(XLOG_DEBUG, "amfs_readdir3_browsable gen=%lu, count=%d", gen, count); ++ plog(XLOG_DEBUG, "%s: gen=%llu, count=%d", __func__, ++ (unsigned long long)gen, count); + + if (gen == 0) { + size_t needed = needroom3(); +@@ -732,8 +733,9 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + for (j = 0, ne = te; ne; ne = ne->ne_nextentry) + plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->name); + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { +- plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + plog(XLOG_DEBUG, "EOF is %d", dp->eof); + } +@@ -793,14 +795,15 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + } + + static int +-amfs_readdir3(am_node *mp, am_cookie3 cookie, ++amfs_readdir3(am_node *mp, voidp cookie, + am_dirlist3 *dp, am_entry3 *ep, u_int count) + { + uint64 gen = *(uint64 *) cookie; + am_node *xp; + + if (amuDebug(D_READDIR)) +- plog(XLOG_DEBUG, "amfs_readdir3 gen=%lu, count=%d", gen, count); ++ plog(XLOG_DEBUG, "%s: gen=%llu, count=%d", __func__, ++ (unsigned long long)gen, count); + + dp->eof = FALSE; /* assume readdir not done */ + +@@ -847,8 +850,9 @@ amfs_readdir3(am_node *mp, am_cookie3 cookie, + am_entry3 *ne; + int j; + for (j = 0, ne = ep; ne; ne = ne->nextentry) { +- plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + } + return 0; +@@ -907,8 +911,9 @@ amfs_readdir3(am_node *mp, am_cookie3 cookie, + am_entry3 *ne; + int j; + for (j = 0, ne = ep; ne; ne = ne->nextentry) { +- plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + } + return 0; +@@ -944,8 +949,8 @@ amfs_generic_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count) + return amfs_readdir(mp, cookie, dp, ep, count); + } else { + if (browsable) +- return amfs_readdir3_browsable(mp, (am_cookie3) cookie, dp, ep, count, full); ++ return amfs_readdir3_browsable(mp, cookie, dp, ep, count, full); + else +- return amfs_readdir3(mp, (am_cookie3) cookie, dp, ep, count); ++ return amfs_readdir3(mp, cookie, dp, ep, count); + } + } +diff --git a/amq/amq.c b/amq/amq.c +index 5d4ed7a..dc5fe02 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -79,7 +79,7 @@ enum show_opt { + static void + time_print(time_type tt) + { +- time_t t = (time_t)tt; ++ time_t t = (time_t)*tt; + struct tm *tp = localtime(&t); + printf("%02d/%02d/%04d %02d:%02d:%02d", + tp->tm_mon + 1, tp->tm_mday, diff --git a/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch b/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch new file mode 100644 index 0000000..0762139 --- /dev/null +++ b/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch @@ -0,0 +1,64 @@ +commit cb493f02ca3b8fbf0dba18d5a733345f54513300 +Author: zoulasc +Date: Mon Mar 7 18:03:19 2016 -0500 + + 1. Add the "sys" alias for "unix", as well as "none", and "null" + 2. Properly handle multiple flavors, although the linux kernel does not (yet?) + 3. Don't add the "sec=" field, because it is already there. + +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index 87f64c3..366eb8b 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -1076,7 +1076,10 @@ struct { + const char *name; + int num; + } flavours[] = { ++ { "none", AUTH_NONE }, ++ { "null", AUTH_NULL }, + { "unix", AUTH_UNIX }, ++ { "sys", AUTH_SYS }, + { "krb5", RPC_AUTH_GSS_KRB5 }, + { "krb5i", RPC_AUTH_GSS_KRB5I }, + { "krb5p", RPC_AUTH_GSS_KRB5P }, +@@ -1104,12 +1107,13 @@ set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp) + nap->auth_flavours = xmalloc(l * sizeof(*nap->auth_flavours)); + + s = ss = xstrdup(o); ++ l = 0; + for (;;) { + q = strchr(s, ','); + if (q) + *q = '\0'; + +- for (l = 0, i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++) ++ for (i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++) + if (strcmp(flavours[i].name, s) == 0) { + nap->auth_flavours[l++] = flavours[i].num; + break; +@@ -1125,6 +1129,9 @@ set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp) + s = ++q; + } + ++ if (l == 0) { ++ nap->auth_flavours[l++] = AUTH_UNIX; ++ } + nap->auth_flavourlen = l; + return ss; + } +@@ -1172,12 +1179,15 @@ add_nfs4_mntopts(const nfs4_args_t *nap, mntent_t *mntp, char *sec) + opts = xrealloc(mntp->mnt_opts, len); + xstrlcat(opts, buf, len); + ++#ifdef notdef ++ /* Already in the options */ + if (sec) { + xstrlcat(opts, ",", len); + xstrlcat(opts, MNTTAB_OPT_SEC, len); + xstrlcat(opts, "=", len); + xstrlcat(opts, sec, len); + } ++#endif + + mntp->mnt_opts = opts; + } diff --git a/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch b/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch new file mode 100644 index 0000000..3057d22 --- /dev/null +++ b/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch @@ -0,0 +1,58 @@ +commit 3369871a5e68484e231705bb0a893b4c6da85d17 +Author: zoulasc +Date: Mon Mar 7 18:05:07 2016 -0500 + + Default to "string" mount options for NFSv4 because the kernel does not + properly handle the auth_flavours[] field. Tested with nfs-utils-1.3.3 and + it always defaults to krb5i if string options are not used. Please note + that the "rw" option is not recognized by the linux kernel. + +diff --git a/conf/mount/mount_linux.c b/conf/mount/mount_linux.c +index d3841ce..de7708d 100644 +--- a/conf/mount/mount_linux.c ++++ b/conf/mount/mount_linux.c +@@ -450,7 +450,7 @@ do_mount_linux(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + return mount(mnt->mnt_fsname, + mnt->mnt_dir, + type, +- MS_MGC_VAL | flags, ++ flags, + data); + } + +@@ -566,9 +566,9 @@ mount_linux_nfs(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + plog(XLOG_DEBUG, "%s: port %d\n", __func__, + htons(mnt_data->addr.sin_port)); + } ++ flags |= MS_MGC_VAL; + if (amuDebug(D_TRACE)) { +- plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, +- MS_MGC_VAL | flags); ++ plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, flags); + plog(XLOG_DEBUG, "%s: updated nfs_args...", __func__); + print_nfs_args(mnt_data, 0); + } +@@ -610,14 +610,21 @@ mount_linux_nfs4(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + plog(XLOG_DEBUG, "%s: type %s\n", __func__, type); + plog(XLOG_DEBUG, "%s: version %d\n", __func__, mnt_data->version); + } ++#if 0 ++ flags |= MS_MGC_VAL; ++#endif + if (amuDebug(D_TRACE)) { +- plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, +- MS_MGC_VAL | flags); ++ plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, flags); + plog(XLOG_DEBUG, "%s: updated nfs_args...", __func__); + print_nfs_args(mnt_data, NFS_VERSION4); + } + ++#if 0 + errorcode = do_mount_linux(type, mnt, flags, data); ++#else ++ errorcode = do_mount_linux(type, mnt, flags, mnt->mnt_opts); ++#endif ++ + + return errorcode; + } diff --git a/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch b/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch new file mode 100644 index 0000000..ed7b9f3 --- /dev/null +++ b/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch @@ -0,0 +1,19 @@ +commit 6a12fc0acb3afb654ba5e6efdeb28b943e2efd3e +Author: zoulasc +Date: Thu Mar 31 14:56:53 2016 -0400 + + Fix SEGV on amq entries that print times. + +diff --git a/amq/amq.c b/amq/amq.c +index dc5fe02..04f9e4d 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -79,7 +79,7 @@ enum show_opt { + static void + time_print(time_type tt) + { +- time_t t = (time_t)*tt; ++ time_t t = (time_t)(intptr_t)tt; + struct tm *tp = localtime(&t); + printf("%02d/%02d/%04d %02d:%02d:%02d", + tp->tm_mon + 1, tp->tm_mday, diff --git a/am-utils-6.2-Fix-nfs-args-setting-code.patch b/am-utils-6.2-Fix-nfs-args-setting-code.patch new file mode 100644 index 0000000..96d0425 --- /dev/null +++ b/am-utils-6.2-Fix-nfs-args-setting-code.patch @@ -0,0 +1,71 @@ +commit 1c4c00a489d7aef115020b903dcd10201eb56ac0 +Author: zoulasc +Date: Thu Apr 30 14:24:39 2015 -0400 + + Fix nfs args setting code (raven at the maw dot net) + +diff --git a/ChangeLog b/ChangeLog +index fd05087..64be682 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2015-04-30 Christos Zoulas ++ ++ * fix compilation error in nfs args set code. ++ (raven at themaw.net) ++ + 2015-01-17 Christos Zoulas + + * Move libtool macro functions from m4/macros to m4 and delete +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index b577bab..87f64c3 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -1001,12 +1001,12 @@ compute_nfs23_args(nfs_args_t *nap, + + #ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */ + if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL))) +- nap->args.flags |= MNT2_NFS_OPT_SYMTTL; ++ nap->flags |= MNT2_NFS_OPT_SYMTTL; + #endif /* MNTTAB_OPT_SYMTTL */ + + #ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */ + if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH))) +- nap->args.flags |= MNT2_NFS_OPT_PGTHRESH; ++ nap->flags |= MNT2_NFS_OPT_PGTHRESH; + #endif /* MNT2_NFS_OPT_PGTHRESH */ + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) +@@ -1029,12 +1029,12 @@ compute_nfs23_args(nfs_args_t *nap, + return; + } + /* update the flags field for knconf */ +- nap->args.flags |= MNT2_NFS_OPT_KNCONF; ++ nap->flags |= MNT2_NFS_OPT_KNCONF; + #endif /* HAVE_TRANSPORT_TYPE_TLI */ + + #ifdef MNT2_NFS_OPT_FSNAME + nap->fsname = fs_name; +- nap->args.flags |= MNT2_NFS_OPT_FSNAME; ++ nap->flags |= MNT2_NFS_OPT_FSNAME; + #endif /* MNT2_NFS_OPT_FSNAME */ + + +@@ -1323,7 +1323,7 @@ compute_nfs4_args(nfs4_args_t *nap, + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) + if (amu_hasmntopt(mntp, MNTTAB_OPT_POSIX) != NULL) { +- nap->args.flags |= MNT2_NFS_OPT_POSIX; ++ nap->flags |= MNT2_NFS_OPT_POSIX; + # ifdef HAVE_NFS_ARGS_T_PATHCONF + nap->pathconf = NULL; + # endif /* HAVE_NFS_ARGS_T_PATHCONF */ +@@ -1333,7 +1333,7 @@ compute_nfs4_args(nfs4_args_t *nap, + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) + nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); + if (nap->maxgrouplist != 0) +- nap->args.flags |= MNT2_NFS_OPT_MAXGRPS; ++ nap->flags |= MNT2_NFS_OPT_MAXGRPS; + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + #ifdef HAVE_NFS_ARGS_T_OPTSTR diff --git a/am-utils-6.2-Improve-debugging-for-unmounting.patch b/am-utils-6.2-Improve-debugging-for-unmounting.patch new file mode 100644 index 0000000..564daa5 --- /dev/null +++ b/am-utils-6.2-Improve-debugging-for-unmounting.patch @@ -0,0 +1,36 @@ +commit 227ce116a307a7f38967639c94ad74970ee83700 +Author: zoulasc +Date: Tue Mar 8 23:30:38 2016 -0500 + + Improve debugging for unmounting. + +diff --git a/amd/map.c b/amd/map.c +index bcb2156..a6df44b 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -904,10 +904,8 @@ unmount_mp(am_node *mp) + int was_backgrounded = 0; + mntfs *mf = mp->am_al->al_mnt; + +-#ifdef notdef + plog(XLOG_INFO, "\"%s\" on %s timed out (flags 0x%x)", +- mp->am_path, mf->mf_mount, (int) mf->mf_flags); +-#endif /* notdef */ ++ mp->am_path, mf->mf_mount, (int) mf->mf_flags); + + #ifndef MNT2_NFS_OPT_SYMTTL + /* +@@ -938,11 +936,12 @@ unmount_mp(am_node *mp) + plog(XLOG_STATS, "file server %s is down - timeout of \"%s\" ignored", mf->mf_server->fs_host, mp->am_path); + mf->mf_flags |= MFF_LOGDOWN; + } ++ dlog("\"%s\" on %s server is down, deferred", mp->am_path, mf->mf_mount); + notify_child(mp, AMQ_UMNT_SERVER, 0, 0); + return 0; + } + +- dlog("\"%s\" on %s timed out", mp->am_path, mf->mf_mount); ++ dlog("\"%s\" on %s timed out, unmounting", mp->am_path, mf->mf_mount); + mf->mf_flags |= MFF_UNMOUNTING; + + #ifdef HAVE_FS_AUTOFS diff --git a/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch b/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch new file mode 100644 index 0000000..7c39f97 --- /dev/null +++ b/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch @@ -0,0 +1,530 @@ +commit 1c9cd2d03ab1561b7eee831af381eff781fcf41e +Author: zoulasc +Date: Fri Apr 8 15:29:33 2016 -0400 + + * Make hasmntval() return an 0 on error, 1 on success and + place the value in an argument. Update all users and + check properly for errors. Get rid of hasmntvalerr(). + * Add hasmntvaldelim() which takes a string delimiter. This + is now used to chop vers=4.1 to 4, so that we can parse the + version correctly (we don't care about the .1 part yet) + +--- + amd/autil.c | 10 ++---- + amd/ops_cdfs.c | 7 ++++ + amd/ops_nfs.c | 3 -- + amd/ops_pcfs.c | 10 ++++-- + amd/ops_ufs.c | 6 +++- + amd/srvr_nfs.c | 24 ++++++++++------ + hlfsd/hlfsd.c | 3 -- + include/am_utils.h | 4 +- + libamu/mount_fs.c | 79 ++++++++++++++++++++++++++++++++++++++--------------- + libamu/mtab.c | 41 ++++++++------------------- + 10 files changed, 109 insertions(+), 78 deletions(-) + +--- am-utils-6.2.orig/amd/autil.c ++++ am-utils-6.2/amd/autil.c +@@ -279,7 +279,7 @@ am_mounted(am_node *mp) + if (amu_hasmntopt(&mnt, "nounmount") || amu_hasmntopt(&mnt, "noumount")) + notimeout = 1; + /* utimeout=N option: user wants to unmount this option AND set timeout */ +- if ((mp->am_timeo = hasmntval(&mnt, "utimeout")) == 0) ++ if (!hasmntval(&mnt, "utimeout", &mp->am_timeo)) + mp->am_timeo = gopt.am_timeo; /* otherwise use default timeout */ + else + notimeout = 0; +@@ -480,8 +480,7 @@ amfs_mount(am_node *mp, mntfs *mf, char + mnt.mnt_type = HIDE_MOUNT_TYPE; + } + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 2; /* XXX: default to 2 retries */ + + /* +@@ -526,7 +525,7 @@ again: + nfs_args_t nfs_args; + am_nfs_handle_t *fhp, anh; + #ifndef HAVE_TRANSPORT_TYPE_TLI +- u_short port; ++ int port; + struct sockaddr_in sin; + #endif /* not HAVE_TRANSPORT_TYPE_TLI */ + +@@ -547,8 +546,7 @@ again: + /* as per POSIX, sin_len need not be set (used internally by kernel) */ + sin.sin_family = AF_INET; + sin.sin_addr = myipaddr; +- port = hasmntval(&mnt, MNTTAB_OPT_PORT); +- if (port) { ++ if (hasmntval(&mnt, MNTTAB_OPT_PORT, &port) && port > 0 && port < 65536) { + sin.sin_port = htons(port); + } else { + plog(XLOG_ERROR, "no port number specified for %s", dir); +--- am-utils-6.2.orig/amd/ops_cdfs.c ++++ am-utils-6.2/amd/ops_cdfs.c +@@ -190,7 +190,12 @@ mount_cdfs(char *mntdir, char *fs_name, + #endif /* HAVE_CDFS_ARGS_T_ISO_FLAGS */ + + #ifdef HAVE_CDFS_ARGS_T_ISO_PGTHRESH +- cdfs_args.iso_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH); ++ { ++ int thresh; ++ if (!hasmntval(&mnt, MNTTAB_OPT_PGTHRESH, &thresh) || thresh < 0) ++ thresh = 0; ++ cdfs_args.iso_pgthresh = thresh; ++ } + #endif /* HAVE_CDFS_ARGS_T_ISO_PGTHRESH */ + + #ifdef HAVE_CDFS_ARGS_T_NORRIP +--- am-utils-6.2.orig/amd/ops_nfs.c ++++ am-utils-6.2/amd/ops_nfs.c +@@ -888,8 +888,7 @@ mount_nfs_fh(am_nfs_handle_t *fhp, char + plog(XLOG_INFO, "mount_nfs_fh: NFS version %d", (int) nfs_version); + plog(XLOG_INFO, "mount_nfs_fh: using NFS transport %s", nfs_proto); + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 1; /* XXX */ + + genflags = compute_mount_flags(&mnt); +--- am-utils-6.2.orig/amd/ops_pcfs.c ++++ am-utils-6.2/amd/ops_pcfs.c +@@ -139,17 +139,19 @@ mount_pcfs(char *mntdir, char *fs_name, + #endif /* HAVE_PCFS_ARGS_T_FSPEC */ + + #ifdef HAVE_PCFS_ARGS_T_MASK +- pcfs_args.mask = 0777; /* this may be the msdos file modes */ +- if ((mask = hasmntval(&mnt, MNTTAB_OPT_MASK)) > 0) ++ if (hasmntval(&mnt, MNTTAB_OPT_MASK, &mask) && mask > 0) + pcfs_args.mask = mask; ++ else ++ pcfs_args.mask = 0777; /* this may be the msdos file modes */ + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "mount_pcfs: mask=%o (octal)", (u_int) pcfs_args.mask); + #endif /* HAVE_PCFS_ARGS_T_MASK */ + + #ifdef HAVE_PCFS_ARGS_T_DIRMASK +- pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */ +- if ((mask = hasmntval(&mnt, MNTTAB_OPT_DIRMASK)) > 0) ++ if (hasmntval(&mnt, MNTTAB_OPT_DIRMASK, &mask) && mask > 0) + pcfs_args.dirmask = mask; ++ else ++ pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */ + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "mount_pcfs: dirmask=%o (octal)", (u_int) pcfs_args.dirmask); + #endif /* HAVE_PCFS_ARGS_T_DIRMASK */ +--- am-utils-6.2.orig/amd/ops_ufs.c ++++ am-utils-6.2/amd/ops_ufs.c +@@ -144,7 +144,11 @@ mount_ufs(char *mntdir, char *fs_name, c + #endif /* HAVE_UFS_ARGS_T_FSPEC */ + + #ifdef HAVE_UFS_ARGS_T_UFS_PGTHRESH +- ufs_args.ufs_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH); ++ { ++ int thresh; ++ if (!hasmntval(&mnt, MNTTAB_OPT_PGTHRESH, &thresh) || thresh < 0) ++ thresh = 0; ++ ufs_args.ufs_pgthresh = thresh; + #endif /* HAVE_UFS_ARGS_T_UFS_PGTHRESH */ + + /* +--- am-utils-6.2.orig/amd/srvr_nfs.c ++++ am-utils-6.2/amd/srvr_nfs.c +@@ -704,10 +704,10 @@ find_nfs_srvr(mntfs *mf) + struct hostent *hp = NULL; + struct sockaddr_in *ip = NULL; + u_long nfs_version = 0; /* default is no version specified */ ++ int val; + u_long best_nfs_version = 0; + char *nfs_proto = NULL; /* no IP protocol either */ +- int nfs_port = 0; +- int nfs_port_opt = 0; ++ int nfs_port; + int fserver_is_down = 0; + + if (mf->mf_fo == NULL) { +@@ -721,7 +721,8 @@ find_nfs_srvr(mntfs *mf) + * are required or not. < 0 = no pings. + */ + mnt.mnt_opts = mf->mf_mopts; +- pingval = hasmntval(&mnt, "ping"); ++ if (!hasmntval(&mnt, "ping", &pingval) || pingval < 0) ++ pingval = 0; + + if (mf->mf_flags & MFF_NFS_SCALEDOWN) { + /* +@@ -739,7 +740,10 @@ find_nfs_srvr(mntfs *mf) + * to decide the highest NFS version to try. + */ + #ifdef MNTTAB_OPT_VERS +- nfs_version = hasmntval(&mnt, MNTTAB_OPT_VERS); ++ if (!hasmntvaldelim(&mnt, MNTTAB_OPT_VERS, ",.", &val) || val < 0) ++ nfs_version = 0; ++ else ++ nfs_version = val; + #endif /* MNTTAB_OPT_VERS */ + + #ifdef MNTTAB_OPT_PROTO +@@ -934,11 +938,11 @@ find_nfs_srvr(mntfs *mf) + * If the port has been determined from the portmapper, use that. + * Default to NFS_PORT otherwise (cf. RFC 2054, 3). + */ +- nfs_port_opt = hasmntval(&mnt, MNTTAB_OPT_PORT); +- if (nfs_port_opt > 0) +- nfs_port = htons(nfs_port_opt); +- if (!nfs_port) ++ if (!hasmntval(&mnt, MNTTAB_OPT_PORT, &nfs_port) ++ || nfs_port > 65535 || nfs_port <= 0) + nfs_port = htons(NFS_PORT); ++ else ++ nfs_port = htons(nfs_port); + + dlog("%s: using port %d for nfs on %s", __func__, + (int) ntohs(nfs_port), host); +@@ -1050,7 +1054,9 @@ no_dns: + fs->fs_flags |= FSF_PING_UNINIT; /* pinger hasn't been initialized */ + np = ALLOC(struct nfs_private); + memset((voidp) np, 0, sizeof(*np)); +- np->np_mountd = htons(hasmntval(&mnt, "mountport")); ++ if (!hasmntval(&mnt, "mountport", &val) || val < 0) ++ val = 0; ++ np->np_mountd = htons(val); + if (np->np_mountd == 0) { + np->np_mountd_inval = 'Y'; + np->np_xid = XID_ALLOC(); +--- am-utils-6.2.orig/hlfsd/hlfsd.c ++++ am-utils-6.2/hlfsd/hlfsd.c +@@ -530,8 +530,7 @@ main(int argc, char *argv[]) + + genflags = compute_mount_flags(&mnt); + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 1; /* XXX */ + + memmove(&anh.v2, root_fhp, sizeof(*root_fhp)); +--- am-utils-6.2.orig/include/am_utils.h ++++ am-utils-6.2/include/am_utils.h +@@ -290,8 +290,8 @@ extern int compute_mount_flags(mntent_t + extern void discard_nfs_args(void *, u_long); + extern u_long get_amd_program_number(void); + extern int getcreds(struct svc_req *, uid_t *, gid_t *, SVCXPRT *); +-extern int hasmntval(mntent_t *, char *); +-extern unsigned int hasmntvalerr(mntent_t *, char *, int *); ++extern int hasmntval(mntent_t *, char *, int *); ++extern int hasmntvaldelim(mntent_t *, char *, const char *, int *); + extern char *hasmntstr(mntent_t *, char *); + extern char *hasmnteq(mntent_t *, char *); + extern char *haseq(char *); +--- am-utils-6.2.orig/libamu/mount_fs.c ++++ am-utils-6.2/libamu/mount_fs.c +@@ -188,8 +188,10 @@ static void + addvers(char *zopts, size_t l, mntent_t *mnt, u_long have_vers, + u_long want_vers) + { +- if (have_vers == want_vers && +- hasmntval(mnt, MNTTAB_OPT_VERS) != want_vers) { ++ int val; ++ if (have_vers == want_vers ++ && hasmntvaldelim(mnt, MNTTAB_OPT_VERS, ".,", &val) ++ && (u_long)val != want_vers) { + char optsbuf[48]; + xsnprintf(optsbuf, sizeof(optsbuf), + "%s=%d", MNTTAB_OPT_VERS, want_vers); +@@ -391,7 +393,7 @@ compute_nfs_attrcache_flags(struct nfs_c + * on the values of the attribute caches. + */ + #ifdef MNTTAB_OPT_ACTIMEO +- err_acval = hasmntvalerr(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */ ++ err_acval = !hasmntval(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */ + #endif /* MNTTAB_OPT_ACTIMEO */ + + /*** acregmin ***/ +@@ -402,7 +404,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACREGMIN + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMIN, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACREGMIN, &tmp); + nap->acregmin = tmp; + # else /* not MNTTAB_OPT_ACREGMIN */ + nap->acregmin = 0; +@@ -423,7 +425,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACREGMAX + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMAX, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACREGMAX, &tmp); + nap->acregmax = tmp; + # else /* not MNTTAB_OPT_ACREGMAX */ + nap->acregmax = 0; +@@ -444,7 +446,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACDIRMIN + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMIN, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACDIRMIN, &tmp); + nap->acdirmin = tmp; + # else /* not MNTTAB_OPT_ACDIRMIN */ + nap->acdirmin = 0; +@@ -465,7 +467,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACDIRMAX + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMAX, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACDIRMAX, &tmp); + nap->acdirmax = tmp; + # else /* not MNTTAB_OPT_ACDIRMAX */ + nap->acdirmax = 0; +@@ -492,6 +494,7 @@ static void + compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp, + const char *nfs_proto, u_long nfs_version) + { ++ int val; + #ifdef MNT2_NFS_OPT_TCP + if (nfs_proto && STREQ(nfs_proto, "tcp")) + nap->flags |= MNT2_NFS_OPT_TCP; +@@ -536,7 +539,10 @@ compute_nfs_common_args(struct nfs_commo + # endif /* not MNTTAB_OPT_RESVPORT */ + #endif /* MNT2_NFS_OPT_RESVPORT */ + +- nap->rsize = hasmntval(mntp, MNTTAB_OPT_RSIZE); ++ if (!hasmntval(mntp, MNTTAB_OPT_RSIZE, &val) || val <= 0) ++ nap->rsize = 0; ++ else ++ nap->rsize = val; + #ifdef MNT2_NFS_OPT_RSIZE + if (nap->rsize) + nap->flags |= MNT2_NFS_OPT_RSIZE; +@@ -544,7 +550,10 @@ compute_nfs_common_args(struct nfs_commo + if (nfs_version == NFS_VERSION && nap->rsize > 8192) + nap->rsize = 8192; + +- nap->wsize = hasmntval(mntp, MNTTAB_OPT_WSIZE); ++ if (!hasmntval(mntp, MNTTAB_OPT_WSIZE, &val) || val <= 0) ++ nap->wsize = 0; ++ else ++ nap->wsize = val; + #ifdef MNT2_NFS_OPT_WSIZE + if (nap->wsize) + nap->flags |= MNT2_NFS_OPT_WSIZE; +@@ -552,13 +561,19 @@ compute_nfs_common_args(struct nfs_commo + if (nfs_version == NFS_VERSION && nap->wsize > 8192) + nap->wsize = 8192; + +- nap->timeo = hasmntval(mntp, MNTTAB_OPT_TIMEO); ++ if (!hasmntval(mntp, MNTTAB_OPT_TIMEO, &val) || val <= 0) ++ nap->timeo = 0; ++ else ++ nap->timeo = val; + #ifdef MNT2_NFS_OPT_TIMEO + if (nap->timeo) + nap->flags |= MNT2_NFS_OPT_TIMEO; + #endif /* MNT2_NFS_OPT_TIMEO */ + +- nap->retrans = hasmntval(mntp, MNTTAB_OPT_RETRANS); ++ if (!hasmntval(mntp, MNTTAB_OPT_RETRANS, &val) || val <= 0) ++ nap->retrans = 0; ++ else ++ nap->retrans = val; + #ifdef MNT2_NFS_OPT_RETRANS + if (nap->retrans) + nap->flags |= MNT2_NFS_OPT_RETRANS; +@@ -861,6 +876,7 @@ compute_nfs23_args(nfs_args_t *nap, + char *host_name, + char *fs_name) + { ++ int val; + struct nfs_common_args a; + /* initialize just in case */ + memset((voidp) nap, 0, sizeof(nfs_args_t)); +@@ -995,18 +1011,30 @@ compute_nfs23_args(nfs_args_t *nap, + /************************************************************************/ + + #ifdef MNT2_NFS_OPT_BIODS +- if ((nap->biods = hasmntval(mntp, MNTTAB_OPT_BIODS))) ++ if (!hasmntval(mntp, MNTTAB_OPT_BIODS, &val) || val <= 0) ++ nap->biods = 0; ++ else { ++ nap->biods = val; + nap->flags |= MNT2_NFS_OPT_BIODS; ++ } + #endif /* MNT2_NFS_OPT_BIODS */ + + #ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */ +- if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL))) ++ if (!hasmntval(mntp, MNTTAB_OPT_SYMTTL, &val) || val <= 0) ++ nap->symttl = 0; ++ else { ++ nap->symttl = val; + nap->flags |= MNT2_NFS_OPT_SYMTTL; ++ } + #endif /* MNTTAB_OPT_SYMTTL */ + + #ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */ +- if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH))) ++ if (!hasmntval(mntp, MNTTAB_OPT_PGTHRESH, &val) || val <= 0) ++ nap->pg_thresh = 0; ++ else { ++ nap->pg_thresh = val; + nap->flags |= MNT2_NFS_OPT_PGTHRESH; ++ } + #endif /* MNT2_NFS_OPT_PGTHRESH */ + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) +@@ -1020,7 +1048,7 @@ compute_nfs23_args(nfs_args_t *nap, + + #ifdef HAVE_TRANSPORT_TYPE_TLI + /* set up syncaddr field */ +- nap->syncaddr = (struct netbuf *) NULL; ++ nap->syncaddr = NULL; + + /* set up knconf field */ + if (get_knetconfig(&nap->knconf, nfsncp, nfs_proto) < 0) { +@@ -1043,9 +1071,12 @@ compute_nfs23_args(nfs_args_t *nap, + #endif /* HAVE_NFS_ARGS_T_OPTSTR */ + + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) +- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); +- if (nap->maxgrouplist != 0) ++ if (!hasmntval(mntp, MNTTAB_OPT_MAXGROUPS, &val) || val <= 0) ++ nap->maxgrouplist = 0; ++ else { ++ nap->maxgrouplist = val; + nap->flags |= MNT2_NFS_OPT_MAXGRPS; ++ } + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + /************************************************************************/ +@@ -1267,6 +1298,7 @@ compute_nfs4_args(nfs4_args_t *nap, + { + char *s; + struct nfs_common_args a; ++ int val; + uint16_t nfs_port; + + /* initialize just in case */ +@@ -1304,11 +1336,10 @@ compute_nfs4_args(nfs4_args_t *nap, + nap->host_addr = xmalloc(nap->host_addrlen); + memcpy(nap->host_addr, ip_addr, nap->host_addrlen); + +- nfs_port = hasmntval(mntp, MNTTAB_OPT_PORT); +- if (nfs_port == 0) ++ if (!hasmntval(mntp, MNTTAB_OPT_PORT, &val) || val <= 0 || val > 65536) + nfs_port = htons(NFS_PORT); + else +- nfs_port = htons(nfs_port); ++ nfs_port = htons(val); + + ((struct sockaddr_in *)nap->host_addr)->sin_port = nfs_port; + +@@ -1341,9 +1372,13 @@ compute_nfs4_args(nfs4_args_t *nap, + #endif /* MNT2_NFS_OPT_POSIX && MNTTAB_OPT_POSIX */ + + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) +- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); +- if (nap->maxgrouplist != 0) ++ nap->maxgrouplist = ++ if (!hasmntval(mntp, MNTTAB_OPT_MAXGROUPS, &val) || val <= 0) ++ nap->maxgrouplist = 0; ++ else { ++ nap->maxgrouplist = val; + nap->flags |= MNT2_NFS_OPT_MAXGRPS; ++ } + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + #ifdef HAVE_NFS_ARGS_T_OPTSTR +--- am-utils-6.2.orig/libamu/mtab.c ++++ am-utils-6.2/libamu/mtab.c +@@ -133,22 +133,12 @@ hasmnteq(mntent_t *mnt, char *opt) + + + /* +- * Wrapper around hasmntvalerr(), which retains backwards compatibiliy with +- * older use of hasmntval(). +- * +- * XXX: eventually, all use of hasmntval() should be replaced with +- * hasmntvalerr(). ++ * Wrapper around hasmntvaldelim(), which uses the standard "," delim + */ + int +-hasmntval(mntent_t *mnt, char *opt) ++hasmntval(mntent_t *mnt, char *opt, int *valp) + { +- int err, val = 0; +- +- err = hasmntvalerr(mnt, opt, &val); +- if (err) /* if there was an error (hasmntvalerr returned 1) */ +- return 0; /* redundant: val==0 above, but leave here for clarity */ +- /* otherwise there was no error */ +- return val; ++ return hasmntvaldelim(mnt, opt, ",", valp); + } + + +@@ -158,36 +148,31 @@ hasmntval(mntent_t *mnt, char *opt) + * valp (argument won't be touched if no value is set, for example due to an + * error). + * +- * Returns non-zero (1) on error; returns 0 on success. +- * +- * XXX: eventually, all use of hasmntval() should be replaced with +- * hasmntvalerr(). ++ * Returns 0 on error; returns 1 on success. + */ +-unsigned int +-hasmntvalerr(mntent_t *mnt, char *opt, int *valp) ++int ++hasmntvaldelim(mntent_t *mnt, char *opt, const char *delim, int *valp) + { + char *str = amu_hasmntopt(mnt, opt); +- int err = 1; /* 1 means no good value was set (an error) */ + char *eq, *endptr; + long int i; + + /* exit if no option specificed */ +- if (!str) { +- goto out; +- } ++ if (!str) ++ return 0; + + eq = hasmnteq(mnt, opt); + + if (!eq) { /* no argument to option ('=' sign was missing) */ + plog(XLOG_MAP, "numeric option to \"%s\" missing", opt); +- goto out; ++ return 0; + } + + /* if got here, then we had an '=' after option name */ + endptr = NULL; + i = strtol(eq, &endptr, 0); /* hex and octal allowed ;-) */ + if (!endptr || +- (endptr != eq && (*endptr == ',' || *endptr == '\0'))) { ++ (endptr != eq && (*endptr == '\0' || strchr(delim, *endptr)))) { + /* + * endptr set means strtol saw a non-digit. If the non-digit is a + * comma, it's probably the start of the next option. If the comma is +@@ -198,15 +183,13 @@ hasmntvalerr(mntent_t *mnt, char *opt, i + * string. + */ + *valp = (int) i; /* set good value */ +- err = 0; /* no error */ ++ return 1; + } else { + /* whatever was after the '=' sign wasn't a number */ + plog(XLOG_MAP, "invalid numeric option in \"%s\": \"%s\"", opt, str); + /* fall through to error/exit processing */ ++ return 0; + } +- +- out: +- return err; + } + + diff --git a/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch b/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch new file mode 100644 index 0000000..78ba30b --- /dev/null +++ b/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch @@ -0,0 +1,45 @@ +commit e7d1bd38b1d1de6b1bec603eeff915ebb57f3c37 +Author: zoulasc +Date: Thu Mar 10 17:50:34 2016 -0500 + + - There is really no ti-rpc nfsv4, so don't send one; instead send a v3 for now. + +diff --git a/amd/srvr_nfs.c b/amd/srvr_nfs.c +index b7c852c..1418a1a 100644 +--- a/amd/srvr_nfs.c ++++ b/amd/srvr_nfs.c +@@ -140,6 +140,7 @@ create_ping_payload(u_long nfs_version) + { + XDR ping_xdr; + struct rpc_msg ping_msg; ++ int rpc_version; + + /* + * Non nfs mounts like /afs/glue.umd.edu have ended up here. +@@ -150,7 +151,17 @@ create_ping_payload(u_long nfs_version) + } else + plog(XLOG_INFO, "%s: nfs_version: %d", __func__, (int) nfs_version); + +- rpc_msg_init(&ping_msg, NFS_PROGRAM, nfs_version, NFSPROC_NULL); ++ /* ++ * There is really no ti-rpc version for NFSv4; most servers respond ++ * with "program unavailable", which is ok since we don't check the ++ * payload, we just care about the pings. Some servers though are ++ * antisocial (Isilon) and don't respond (which is their right to do). ++ * Eventually we should make a new mechanism to do server pings for ++ * NFSv4, but for now it is easiest to downgrade the RPC version to 3. ++ */ ++ rpc_version = nfs_version == 4 ? 3 : nfs_version; ++ ++ rpc_msg_init(&ping_msg, NFS_PROGRAM, rpc_version, NFSPROC_NULL); + + /* + * Create an XDR endpoint +@@ -600,6 +611,7 @@ nfs_keepalive(voidp v) + case ENETUNREACH: + case EHOSTDOWN: + case EHOSTUNREACH: ++ dlog("Failed to NFS ping to %s (%d)", fs->fs_host, error); + np->np_ping = MAX_ALLOWED_PINGS; /* immediately down */ + np->np_ttl = (time_t) 0; + /* diff --git a/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch b/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch new file mode 100644 index 0000000..64fbaff --- /dev/null +++ b/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch @@ -0,0 +1,30 @@ +commit ad416c8656c2dff6f1bcffee8517284de94c9d92 +Author: zoulasc +Date: Thu May 12 10:21:55 2016 -0400 + + Update the ctime of the directory too, since it changed. From Mark Davies + +diff --git a/amd/autil.c b/amd/autil.c +index 35d8708..f44a0e2 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -183,6 +183,7 @@ forcibly_timeout_mp(am_node *mp) + * more. + */ + clocktime(&mp->am_parent->am_fattr.na_mtime); ++ mp->am_parent->am_fattr.na_ctime = mp->am_parent->am_fattr.na_mtime; + reschedule_timeout_mp(); + } + } +@@ -312,8 +313,10 @@ am_mounted(am_node *mp) + /* + * Update mtime of parent node (copying "struct nfstime" in '=' below) + */ +- if (mp->am_parent && mp->am_parent->am_al->al_mnt) ++ if (mp->am_parent && mp->am_parent->am_al->al_mnt) { + mp->am_parent->am_fattr.na_mtime = mp->am_fattr.na_mtime; ++ mp->am_parent->am_fattr.na_ctime = mp->am_fattr.na_mtime; ++ } + + /* + * This is ugly, but essentially unavoidable diff --git a/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch b/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch new file mode 100644 index 0000000..ea310d0 --- /dev/null +++ b/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch @@ -0,0 +1,94 @@ +commit a5ea57a64a1d70486e8d8ab2da944e50ca51b836 +Author: zoulasc +Date: Tue Mar 8 23:31:26 2016 -0500 + + - add more debugging in the unmount path + - if the EXPIRE_MULTI call fails, with EAGAIN, fail back to the EXPIRE call + seems to fix unmounting with nfsv4 volumes. + +diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c +index d543979..5b4ac06 100644 +--- a/conf/autofs/autofs_linux.c ++++ b/conf/autofs/autofs_linux.c +@@ -365,6 +365,7 @@ autofs_expire_one(am_node *mp, char *name, autofs_wqt_t token) + + ap = find_ap(ap_path); + if (ap == NULL) { ++ dlog("%s: could not find %s", __func__, ap_path); + /* not found??? not sure what to do here... */ + send_fail(fh->ioctlfd, token); + goto out; +@@ -376,6 +377,7 @@ autofs_expire_one(am_node *mp, char *name, autofs_wqt_t token) + p->next = fh->pending_umounts; + fh->pending_umounts = p; + ++ dlog("%s: unmount for %s", __func__, ap_path); + unmount_mp(ap); + + out: +@@ -426,6 +428,7 @@ autofs_missing_one(am_node *mp, autofs_wqt_t wait_queue_token, char *name) + dlog("Mount still pending, not sending autofs reply yet"); + return; + } ++ dlog("%s: lookup failed for %s/%s", __func__, mp->am_path, name); + autofs_lookup_failed(mp, name); + } + mp->am_stats.s_lookup++; +@@ -872,15 +875,42 @@ autofs_compute_mount_flags(mntent_t *mnt) + return 0; + } + ++static int autofs_expire_4(am_node *mp) ++{ ++ struct autofs_packet_expire pkt; ++ autofs_fh_t *fh = mp->am_autofs_fh; ++ ++ dlog("Calling AUTOFS_IOC_EXPIRE"); ++ if (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE, &pkt) == -1) ++ { ++ dlog("AUTOFS_IOC_EXPIRE for %s failed %d", mp->am_path, errno); ++ return -1; ++ } ++ ++ autofs_handle_expire(mp, &pkt); ++ return 0; ++} ++ + + #if AUTOFS_MAX_PROTO_VERSION >= 4 + static int autofs_timeout_mp_task(void *arg) + { + am_node *mp = (am_node *)arg; + autofs_fh_t *fh = mp->am_autofs_fh; +- int now = 0; +- +- while (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE_MULTI, &now) == 0); ++ int how = AUTOFS_EXP_IMMEDIATE; ++ ++ for (;;) ++ { ++ dlog("Calling AUTOFS_IOC_EXPIRE_MULTI"); ++ if (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE_MULTI, &how) == -1) ++ { ++ dlog("AUTOFS_IOC_EXPIRE_MULTI for %s failed %d", mp->am_path, errno); ++ if (errno != EAGAIN) ++ break; ++ if (autofs_expire_4(mp) == -1) ++ break; ++ } ++ } + return 0; + } + #endif /* AUTOFS_MAX_PROTO_VERSION >= 4 */ +@@ -895,9 +925,8 @@ void autofs_timeout_mp(am_node *mp) + mp->am_autofs_ttl = now + gopt.am_timeo_w; + + if (fh->version < 4) { +- struct autofs_packet_expire pkt; +- while (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE, &pkt) == 0) +- autofs_handle_expire(mp, &pkt); ++ while (autofs_expire_4(mp) == 0) ++ continue; + return; + } + diff --git a/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch b/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch new file mode 100644 index 0000000..6271797 --- /dev/null +++ b/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch @@ -0,0 +1,19 @@ +commit a187041e062c5b656def30a3ec282156360003f3 +Author: Christos Zoulas +Date: Wed Jan 21 23:28:46 2015 -0500 + + don't use logical && when & is meant + +diff --git a/amd/map.c b/amd/map.c +index fce8273..0d404cf 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -752,7 +752,7 @@ umount_exported(void) + } else { + am_unmounted(mp); + } +- if (!(mf->mf_flags && (MFF_UNMOUNTING|MFF_MOUNTED))) ++ if (!(mf->mf_flags & (MFF_UNMOUNTING|MFF_MOUNTED))) + exported_ap[i] = NULL; + } else { + /* diff --git a/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch b/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch new file mode 100644 index 0000000..2ddb6d1 --- /dev/null +++ b/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch @@ -0,0 +1,57 @@ +am-utils-6.2 - fix compiler assignment warning due to libtirpc + +From: Ian Kent + +When using libtirpc there is a compiler warning on an assignment in +the amq_program_1() function. + +This warning was due to libtirpc using struct sockaddr_in6 for some +address fields in the transport structure as it is backward compatible +with struct sockaddr_in when IPv4 is in use. + +But if TLI is in use svc_getcaller() may not be defined or, if it is, +doesn't work as expected. + +So change to using amu_svc_getcaller(), which deals with the needed +cast for libtirpc, and handle the NULL return if TLI is being used. + +Signed-off-by: Ian Kent +--- + amd/amq_svc.c | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +diff --git a/amd/amq_svc.c b/amd/amq_svc.c +index 1f2b3d6..40f79fa 100644 +--- a/amd/amq_svc.c ++++ b/amd/amq_svc.c +@@ -162,15 +162,21 @@ amq_program_1(struct svc_req *rqstp, SVCXPRT *transp) + + #if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) + if (gopt.flags & CFM_USE_TCPWRAPPERS) { +- struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt); +- char *remote_hostname = inet_ntoa(remote_addr->sin_addr); +- +- if (!amqsvc_is_client_allowed(remote_addr)) { +- plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); +- svcerr_auth(transp, AUTH_FAILED); +- return; +- } else { +- dlog("Amd allowed remote amq service to %s", remote_hostname); ++ struct sockaddr_in *remote_addr = amu_svc_getcaller(rqstp->rq_xprt); ++ char *remote_hostname; ++ ++ /* Check the return from amu_svc_getcaller() becuase it's always NULL ++ * if TLI is in use. ++ */ ++ if (remote_addr) { ++ remote_hostname = inet_ntoa(remote_addr->sin_addr); ++ if (!amqsvc_is_client_allowed(remote_addr)) { ++ plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); ++ svcerr_auth(transp, AUTH_FAILED); ++ return; ++ } else { ++ dlog("Amd allowed remote amq service to %s", remote_hostname); ++ } + } + } + #endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ diff --git a/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch b/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch new file mode 100644 index 0000000..6c5c026 --- /dev/null +++ b/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch @@ -0,0 +1,24 @@ +am-utils-6.2 - fix logical not comparison in get_ldap_timestamp() + +From: Ian Kent + +Looks like the not in this comparison is not meant to be applied to *ts. + +Signed-off-by: Ian Kent +--- + amd/info_ldap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/amd/info_ldap.c b/amd/info_ldap.c +index cfed6fd..ecfc210 100644 +--- a/amd/info_ldap.c ++++ b/amd/info_ldap.c +@@ -446,7 +446,7 @@ get_ldap_timestamp(ALD *a, char *map, time_t *ts) + vals[0], map); + err = ENOENT; + } +- if (!*ts > 0) { ++ if (!(*ts > 0)) { + plog(XLOG_USER, "Nonpositive timestamp %ld for map %s\n", + (u_long) *ts, map); + err = ENOENT; diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch new file mode 100644 index 0000000..ca3b397 --- /dev/null +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -0,0 +1,54 @@ +am-utils-6.2 - fix umount to mount race + +From: Richard P + +If a mount request arrives while its mount fs is being umounted the +the reference count of the mount fs never reaches 1 so the location +MF_MOUNTED is not cleared and the mount fs instance is not freed. + +This leads to amd thinking the mount fs is still mounted and the +mount request succeeds without its corresponding target being +mounted. + +This patch from Richard P (with an added fix to a log message) +fixes the problem. + +Signed-off-by: Richard P +Signed-off-by: Ian Kent +--- + amd/amfs_generic.c | 7 +++++-- + amd/autil.c | 6 ++++++ + 2 files changed, 11 insertions(+), 2 deletions(-) + +--- am-utils-6.2.orig/amd/amfs_generic.c ++++ am-utils-6.2/amd/amfs_generic.c +@@ -743,9 +743,12 @@ amfs_bgmount(struct continuation *cp) + + if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { + /* +- * Still mounting - retry later ++ * Still mounting or umounting - retry later + */ +- dlog("mount of \"%s\" already pending", mf->mf_info); ++ if (mf->mf_flags & MFF_MOUNTING) ++ dlog("mount of \"%s\" already pending", mf->mf_info); ++ else ++ dlog("unmount of \"%s\" already pending", mf->mf_info); + goto retry; + } + +--- am-utils-6.2.orig/amd/autil.c ++++ am-utils-6.2/amd/autil.c +@@ -703,6 +703,12 @@ am_unmounted(am_node *mp) + } + + /* ++ * Clear the mounted flag in case there is a pending mount with ++ * the same target fs. ++ */ ++ mf->mf_flags &= ~MFF_MOUNTED; ++ ++ /* + * If this is a pseudo-directory then adjust the link count + * in the parent + */ diff --git a/am-utils-6.2-make-sure-variables-are-initialized.patch b/am-utils-6.2-make-sure-variables-are-initialized.patch new file mode 100644 index 0000000..b5449de --- /dev/null +++ b/am-utils-6.2-make-sure-variables-are-initialized.patch @@ -0,0 +1,20 @@ +commit 54da7c8206e38d0bf08a250835553754a1235360 +Author: Christos Zoulas +Date: Wed Jan 21 23:28:33 2015 -0500 + + make sure variables are initialized + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 7192a6a..30effba 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1711,6 +1711,9 @@ am_nfs3_fsstat_3_svc(am_FSSTAT3args *argp, struct svc_req *rqstp) + if ((gopt.flags & CFM_SHOW_STATFS_ENTRIES) && + mp->am_al->al_mnt && mp->am_al->al_mnt->mf_mopts) { + mnt.mnt_opts = mp->am_al->al_mnt->mf_mopts; ++ blocks = 0; ++ bfree = 0; ++ bavail = 0; + if (amu_hasmntopt(&mnt, "browsable")) { + count_map_entries(mp, &blocks, &bfree, &bavail); + } diff --git a/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch b/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch new file mode 100644 index 0000000..404e51f --- /dev/null +++ b/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch @@ -0,0 +1,26 @@ +commit 116309607c437e302dafa1efb60330f54f815761 +Author: Christos Zoulas +Date: Sat Jan 17 12:21:24 2015 -0500 + + print_nfs_common_args() is only needed with DEBUG + +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index b5576bd..b577bab 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -647,6 +647,7 @@ compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp, + #endif /* defined(MNT2_NFS_OPT_XLATECOOKIE) && defined(MNTTAB_OPT_XLATECOOKIE) */ + } + ++#ifdef DEBUG + static void + print_nfs_common_args(const struct nfs_common_args *a) + { +@@ -664,6 +665,7 @@ print_nfs_common_args(const struct nfs_common_args *a) + plog(XLOG_DEBUG, "NA->acdirmax = %lu", a->acdirmax); + #endif /* HAVE_NFS_ARGS_T_ACREGMIN */ + } ++#endif + + static void + discard_nfs23_args(nfs_args_t *nap) diff --git a/am-utils-6.2-remove-set-but-not-used-variable-again.patch b/am-utils-6.2-remove-set-but-not-used-variable-again.patch new file mode 100644 index 0000000..b4dcf94 --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-again.patch @@ -0,0 +1,26 @@ +commit a87188b9f0596651ce987253a6af23aca4b08b75 +Author: Christos Zoulas +Date: Sat Jan 17 12:42:55 2015 -0500 + + remove set but not used variable + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index b3ad5fc..6326007 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -418,7 +418,6 @@ u_long + get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const char *proto, u_long def) + { + CLIENT *clnt; +- int again = 0; + enum clnt_stat clnt_stat; + struct timeval tv; + int sock; +@@ -433,7 +432,6 @@ get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const c + nfs_version = def; + else + nfs_version = NFS_VERS_MAX; +- again = 1; + } + tv.tv_sec = 2; /* retry every 2 seconds, but also timeout */ + tv.tv_usec = 0; diff --git a/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch b/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch new file mode 100644 index 0000000..1f08d8a --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch @@ -0,0 +1,28 @@ +commit ed717dad0fee421744a24e6fb43e09d62b3f898d +Author: Christos Zoulas +Date: Sat Jan 17 12:45:22 2015 -0500 + + remove set but not used variable + +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index 25d734b..c352a32 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -1153,7 +1153,6 @@ amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op) + { + am_node *new_mp; + am_loc **al_array; +- int mp_error; + + dlog("in amfs_generic_lookup_child"); + +@@ -1178,9 +1177,6 @@ amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op) + return new_mp; + } + +- /* save error_return */ +- mp_error = *error_return; +- + al_array = amfs_lookup_loc(new_mp, error_return); + if (!al_array) { + new_mp->am_error = new_mp->am_al->al_mnt->mf_error = *error_return; diff --git a/am-utils-6.2-remove-set-but-not-used-variable-s.patch b/am-utils-6.2-remove-set-but-not-used-variable-s.patch new file mode 100644 index 0000000..20f5911 --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-s.patch @@ -0,0 +1,38 @@ +commit 79bb90caf12d2713b4736c3820135f0f00424f10 +Author: Christos Zoulas +Date: Sat Jan 17 12:29:03 2015 -0500 + + remove set but not used variable + +diff --git a/hlfsd/hlfsd.c b/hlfsd/hlfsd.c +index 686bb63..701abcd 100644 +--- a/hlfsd/hlfsd.c ++++ b/hlfsd/hlfsd.c +@@ -144,7 +144,6 @@ main(int argc, char *argv[]) + int opterrs = 0; + int retry; + int soNFS; /* NFS socket */ +- int s = -99; + mntent_t mnt; + nfs_args_t nfs_args; + am_nfs_handle_t anh; +@@ -449,17 +448,16 @@ main(int argc, char *argv[]) + * set this signal handler. + */ + if (amuDebug(D_DAEMON)) { +- s = -99; + while (stoplight != SIGUSR2) { + plog(XLOG_INFO, "parent waits for child to setup (stoplight=%d)", stoplight); + #ifdef HAVE_SIGSUSPEND + { + sigset_t mask; + sigemptyset(&mask); +- s = sigsuspend(&mask); /* wait for child to set up */ ++ (void)sigsuspend(&mask); /* wait for child to set up */ + } + #else /* not HAVE_SIGSUSPEND */ +- s = sigpause(0); /* wait for child to set up */ ++ (void)sigpause(0); /* wait for child to set up */ + #endif /* not HAVE_SIGSUSPEND */ + sleep(1); + } diff --git a/am-utils-6.2-remove-unused-function-show_map.patch b/am-utils-6.2-remove-unused-function-show_map.patch new file mode 100644 index 0000000..f7b6648 --- /dev/null +++ b/am-utils-6.2-remove-unused-function-show_map.patch @@ -0,0 +1,22 @@ +commit f61becdba8df1d6d515f5476d312d3cf4e933946 +Author: Christos Zoulas +Date: Sat Jan 17 12:43:32 2015 -0500 + + remove unused function + +diff --git a/amq/amq.c b/amq/amq.c +index e99732f..5d4ed7a 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -256,11 +256,6 @@ show_mi(amq_mount_info_list *ml, enum show_opt e, int *mwid, int *dwid, int *twi + } + + static void +-show_map(amq_map_info *mi) +-{ +-} +- +-static void + show_mapinfo(amq_map_info_list *ml, enum show_opt e, int *nwid, int *wwid) + { + u_int i; diff --git a/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch b/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch new file mode 100644 index 0000000..9b5fbc4 --- /dev/null +++ b/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch @@ -0,0 +1,59 @@ +commit 76e1a5ddc9ef9730205b2da2ed6b654d8fbaef40 +Author: Christos Zoulas +Date: Sat Jan 17 12:27:56 2015 -0500 + + uid_t might be a different size than unsigned int, so XXX: truncate. + +diff --git a/hlfsd/stubs.c b/hlfsd/stubs.c +index b26e5f4..70876b7 100644 +--- a/hlfsd/stubs.c ++++ b/hlfsd/stubs.c +@@ -60,6 +60,21 @@ static int started; + static am_nfs_fh slink; + static am_nfs_fh un_fhandle; + ++static void ++xgetuid(uid_t *uid, const void *p) ++{ ++ u_int xuid; ++ (void)memcpy(&xuid, p, sizeof(xuid)); ++ *uid = xuid; ++} ++ ++static void ++xputuid(void *p, uid_t uid) ++{ ++ u_int xuid = uid; ++ (void)memcpy(p, &xuid, sizeof(xuid)); ++} ++ + /* + * GLOBALS: + */ +@@ -160,7 +175,7 @@ nfsproc_getattr_2_svc(am_nfs_fh *argp, struct svc_req *rqstp) + if (gid != hlfs_gid) { + res.ns_status = NFSERR_STALE; + } else { +- (void)memcpy(&uid, argp->fh_data, sizeof(uid)); ++ xgetuid(&uid, argp->fh_data); + if (plt_search(uid) != (uid2home_t *) NULL) { + res.ns_status = NFS_OK; + un_fattr.na_fileid = uid; +@@ -278,7 +293,7 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp) + un_fattr.na_fileid = untab[idx].uid; + res.dr_u.dr_drok_u.drok_attributes = un_fattr; + memset(&un_fhandle, 0, sizeof(un_fhandle)); +- memcpy(un_fhandle.fh_data, &untab[idx].uid, sizeof(untab[idx].uid)); ++ xputuid(un_fhandle.fh_data, untab[idx].uid); + xstrlcpy((char *) &un_fhandle.fh_data[sizeof(int)], + untab[idx].username, + sizeof(am_nfs_fh) - sizeof(int)); +@@ -333,7 +348,7 @@ nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp) + } + + if (groupid == hlfs_gid) { +- memcpy(&userid, argp->fh_data, sizeof(userid)); ++ xgetuid(&userid, argp->fh_data); + username = (char *) &argp->fh_data[sizeof(int)]; + if (!(res.rlr_u.rlr_data_u = mailbox(userid, username))) + return (nfsreadlinkres *) NULL; diff --git a/am-utils.spec b/am-utils.spec index 8e8c4b0..7cbfcb6 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 12%{?dist} +Release: 20%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -45,20 +45,43 @@ Requires(preun): /sbin/install-info # Fix problems with possible future libtool rebases (#1181698) Patch1: am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch +Patch2: am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch +Patch3: am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch +Patch4: am-utils-6.2-remove-set-but-not-used-variable-s.patch +Patch5: am-utils-6.2-remove-set-but-not-used-variable-again.patch +Patch6: am-utils-6.2-remove-unused-function-show_map.patch +Patch7: am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch +Patch8: am-utils-6.2-32-bit-fixes.patch +Patch9: am-utils-6.2-make-sure-variables-are-initialized.patch +Patch10: am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch +Patch11: am-utils-6.2-Fix-nfs-args-setting-code.patch -Patch2: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch -Patch3: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch -Patch4: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch -Patch5: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch -Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch +Patch12: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch +Patch13: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch +Patch14: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch +Patch15: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch +Patch16: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch -Patch7: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch -Patch8: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch -Patch9: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch -Patch10: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch -Patch11: am-utils-6.2-add-NFSv3-rpc-request-validation.patch -Patch12: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch -Patch13: am-utils-6.2-use-linux-libtirpc-if-present.patch +Patch17: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch +Patch18: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch19: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch20: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch +Patch21: am-utils-6.2-add-NFSv3-rpc-request-validation.patch +Patch22: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch + +Patch23: am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch +Patch24: am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch +Patch25: am-utils-6.2-Improve-debugging-for-unmounting.patch +Patch26: am-utils-6.2-add-more-debugging-in-the-unmount-path.patch +Patch27: am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch +Patch28: am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch +Patch29: am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch +Patch30: am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch + +Patch31: am-utils-6.2-use-linux-libtirpc-if-present.patch +Patch32: am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch +Patch33: am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch +Patch34: am-utils-6.2-fix-umount-to-mount-race.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -96,6 +119,27 @@ mounting and unmounting filesystems. %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 ./bootstrap @@ -207,6 +251,29 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Sep 14 2016 Ian Kent - 5:6.2.0-20 +- print_nfs_common_args() is only needed with DEBUG. +- uid_t might be a different size than unsigned int. +- remove set but not used variable s. +- remove set but not used variable again. +- remove unused function show_map(). +- remove set but not used variable mp_error. +- 32 bit fixes. +- make sure variables are initialized. +- dont use logical double ampersand when ampersand is meant. +- Fix nfs args setting code. +- Add the sys alias for unix as well as none and null. +- Default to string mount options for NFSv4. +- Improve debugging for unmounting. +- add more debugging in the unmount path. +- There is really no ti-rpc nfsv4 so dont send one. +- Fix SEGV on amq entries that print times. +- Make hasmntval return an 0 on error 1 on success. +- Update the ctime of the directory too since it changed. +- fix compiler assignment warning due to libtirpc. +- fix logical not comparison in get_ldap_timestamp(). +- fix umount to mount race. + * Wed Mar 2 2016 Ian Kent - 5:6.2.0-12 - add get_nfs_xprt() and put_nfs_xprt() functions. - use new get_nfs_xprt() and put_nfs_xprt() functions. From cff2af1e7422955ea97ff56f304f5ecbc104292a Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Wed, 14 Sep 2016 17:56:29 +0800 Subject: [PATCH 101/157] - fix typo in libtirpc configure macro. --- am-utils-6.2-use-linux-libtirpc-if-present.patch | 2 +- am-utils.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch index 1649b54..df20d5c 100644 --- a/am-utils-6.2-use-linux-libtirpc-if-present.patch +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -88,6 +88,6 @@ index 0000000..918423c + TIRPC_CPPFLAGS="-I/usr/include/tirpc" + AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) + AC_CHECK_LIB(tirpc, clnt_tli_create, [TIRPC_LIBS="-ltirpc"], [TIRPC_CPPFLAGS=""])]) -+ AMU_CFLAGS="$ANU_CFLAGS $TIRPC_CPPFLAGS" ++ AMU_CFLAGS="$AMU_CFLAGS $TIRPC_CPPFLAGS" + LIBS="$LIBS $TIRPC_LIBS" +]) diff --git a/am-utils.spec b/am-utils.spec index 7cbfcb6..c2f75b6 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 20%{?dist} +Release: 21%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -251,6 +251,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Sep 14 2016 Ian Kent - 5:6.2.0-21 +- fix typo in libtirpc configure macro. + * Wed Sep 14 2016 Ian Kent - 5:6.2.0-20 - print_nfs_common_args() is only needed with DEBUG. - uid_t might be a different size than unsigned int. From 336ddc8c6103c817ce7d4de0f55ad6ba97b0e885 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 3 Oct 2016 13:30:14 +0800 Subject: [PATCH 102/157] - sync with updtream git and add a couple of bug fixes. --- am-utils-6.2-32-bit-fixes.patch | 145 +++++ ...as-for-unix-as-well-as-none-and-null.patch | 64 +++ ...lt-to-string-mount-options-for-NFSv4.patch | 58 ++ ...SEGV-on-amq-entries-that-print-times.patch | 19 + am-utils-6.2-Fix-nfs-args-setting-code.patch | 71 +++ ...6.2-Improve-debugging-for-unmounting.patch | 36 ++ ...al-return-an-0-on-error-1-on-success.patch | 530 ++++++++++++++++++ ...lly-no-ti-rpc-nfsv4-so-dont-send-one.patch | 45 ++ ...f-the-directory-too-since-it-changed.patch | 30 + ...d-more-debugging-in-the-unmount-path.patch | 94 ++++ ...le-ampersand-when-ampersand-is-meant.patch | 19 + ...r-assignment-warning-due-to-libtirpc.patch | 57 ++ ...not-comparison-in-get_ldap_timestamp.patch | 24 + am-utils-6.2-fix-umount-to-mount-race.patch | 54 ++ ...-make-sure-variables-are-initialized.patch | 20 + ...ommon_args-is-only-needed-with-DEBUG.patch | 26 + ...move-set-but-not-used-variable-again.patch | 26 + ...e-set-but-not-used-variable-mp_error.patch | 28 + ...2-remove-set-but-not-used-variable-s.patch | 38 ++ ...-6.2-remove-unused-function-show_map.patch | 22 + ...e-a-different-size-than-unsigned-int.patch | 59 ++ am-utils.spec | 95 +++- 22 files changed, 1546 insertions(+), 14 deletions(-) create mode 100644 am-utils-6.2-32-bit-fixes.patch create mode 100644 am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch create mode 100644 am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch create mode 100644 am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch create mode 100644 am-utils-6.2-Fix-nfs-args-setting-code.patch create mode 100644 am-utils-6.2-Improve-debugging-for-unmounting.patch create mode 100644 am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch create mode 100644 am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch create mode 100644 am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch create mode 100644 am-utils-6.2-add-more-debugging-in-the-unmount-path.patch create mode 100644 am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch create mode 100644 am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch create mode 100644 am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch create mode 100644 am-utils-6.2-fix-umount-to-mount-race.patch create mode 100644 am-utils-6.2-make-sure-variables-are-initialized.patch create mode 100644 am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch create mode 100644 am-utils-6.2-remove-set-but-not-used-variable-again.patch create mode 100644 am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch create mode 100644 am-utils-6.2-remove-set-but-not-used-variable-s.patch create mode 100644 am-utils-6.2-remove-unused-function-show_map.patch create mode 100644 am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch diff --git a/am-utils-6.2-32-bit-fixes.patch b/am-utils-6.2-32-bit-fixes.patch new file mode 100644 index 0000000..ac6cf1a --- /dev/null +++ b/am-utils-6.2-32-bit-fixes.patch @@ -0,0 +1,145 @@ +commit a6bbb7d9b098dacd2636925c232c630452e4b46e +Author: Christos Zoulas +Date: Sun Jan 18 18:03:37 2015 -0500 + + 32 bit fixes + +diff --git a/amd/amq_subr.c b/amd/amq_subr.c +index 8783611..86f0351 100644 +--- a/amd/amq_subr.c ++++ b/amd/amq_subr.c +@@ -528,6 +528,7 @@ xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead) + u_int len = 0; + int x; + char *n; ++ long modify; + + /* + * Compute length of list +@@ -552,7 +553,8 @@ xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead) + return (FALSE); + } + +- if (!xdr_long(xdrs, &m->modify)) { ++ modify = (long)m->modify; ++ if (!xdr_long(xdrs, &modify)) { + return (FALSE); + } + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index e463ff7..7192a6a 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1104,9 +1104,9 @@ am_nfs3_getattr_3_svc(am_GETATTR3args *argp, struct svc_req *rqstp) + result.status = AM_NFS3_OK; + + if (amuDebug(D_TRACE)) +- plog(XLOG_DEBUG, "\tstat(%s), size = %lu, mtime=%d.%d", ++ plog(XLOG_DEBUG, "\tstat(%s), size = %llu, mtime=%d.%d", + mp->am_path, +- (am_size3) fattr3->size, ++ (unsigned long long)fattr3->size, + (u_int) fattr3->mtime.seconds, + (u_int) fattr3->mtime.nseconds); + +diff --git a/amd/readdir.c b/amd/readdir.c +index 4b5e61b..57773a5 100644 +--- a/amd/readdir.c ++++ b/amd/readdir.c +@@ -635,7 +635,7 @@ static size_t needroom3(void) + + /* This one is called only if map is browsable */ + static int +-amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, ++amfs_readdir3_browsable(am_node *mp, voidp cookie, + am_dirlist3 *dp, am_entry3 *ep, u_int count, + int fully_browsable) + { +@@ -647,7 +647,8 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + dp->eof = FALSE; /* assume readdir not done */ + + if (amuDebug(D_READDIR)) +- plog(XLOG_DEBUG, "amfs_readdir3_browsable gen=%lu, count=%d", gen, count); ++ plog(XLOG_DEBUG, "%s: gen=%llu, count=%d", __func__, ++ (unsigned long long)gen, count); + + if (gen == 0) { + size_t needed = needroom3(); +@@ -732,8 +733,9 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + for (j = 0, ne = te; ne; ne = ne->ne_nextentry) + plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->name); + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { +- plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + plog(XLOG_DEBUG, "EOF is %d", dp->eof); + } +@@ -793,14 +795,15 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + } + + static int +-amfs_readdir3(am_node *mp, am_cookie3 cookie, ++amfs_readdir3(am_node *mp, voidp cookie, + am_dirlist3 *dp, am_entry3 *ep, u_int count) + { + uint64 gen = *(uint64 *) cookie; + am_node *xp; + + if (amuDebug(D_READDIR)) +- plog(XLOG_DEBUG, "amfs_readdir3 gen=%lu, count=%d", gen, count); ++ plog(XLOG_DEBUG, "%s: gen=%llu, count=%d", __func__, ++ (unsigned long long)gen, count); + + dp->eof = FALSE; /* assume readdir not done */ + +@@ -847,8 +850,9 @@ amfs_readdir3(am_node *mp, am_cookie3 cookie, + am_entry3 *ne; + int j; + for (j = 0, ne = ep; ne; ne = ne->nextentry) { +- plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + } + return 0; +@@ -907,8 +911,9 @@ amfs_readdir3(am_node *mp, am_cookie3 cookie, + am_entry3 *ne; + int j; + for (j = 0, ne = ep; ne; ne = ne->nextentry) { +- plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + } + return 0; +@@ -944,8 +949,8 @@ amfs_generic_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count) + return amfs_readdir(mp, cookie, dp, ep, count); + } else { + if (browsable) +- return amfs_readdir3_browsable(mp, (am_cookie3) cookie, dp, ep, count, full); ++ return amfs_readdir3_browsable(mp, cookie, dp, ep, count, full); + else +- return amfs_readdir3(mp, (am_cookie3) cookie, dp, ep, count); ++ return amfs_readdir3(mp, cookie, dp, ep, count); + } + } +diff --git a/amq/amq.c b/amq/amq.c +index 5d4ed7a..dc5fe02 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -79,7 +79,7 @@ enum show_opt { + static void + time_print(time_type tt) + { +- time_t t = (time_t)tt; ++ time_t t = (time_t)*tt; + struct tm *tp = localtime(&t); + printf("%02d/%02d/%04d %02d:%02d:%02d", + tp->tm_mon + 1, tp->tm_mday, diff --git a/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch b/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch new file mode 100644 index 0000000..0762139 --- /dev/null +++ b/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch @@ -0,0 +1,64 @@ +commit cb493f02ca3b8fbf0dba18d5a733345f54513300 +Author: zoulasc +Date: Mon Mar 7 18:03:19 2016 -0500 + + 1. Add the "sys" alias for "unix", as well as "none", and "null" + 2. Properly handle multiple flavors, although the linux kernel does not (yet?) + 3. Don't add the "sec=" field, because it is already there. + +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index 87f64c3..366eb8b 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -1076,7 +1076,10 @@ struct { + const char *name; + int num; + } flavours[] = { ++ { "none", AUTH_NONE }, ++ { "null", AUTH_NULL }, + { "unix", AUTH_UNIX }, ++ { "sys", AUTH_SYS }, + { "krb5", RPC_AUTH_GSS_KRB5 }, + { "krb5i", RPC_AUTH_GSS_KRB5I }, + { "krb5p", RPC_AUTH_GSS_KRB5P }, +@@ -1104,12 +1107,13 @@ set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp) + nap->auth_flavours = xmalloc(l * sizeof(*nap->auth_flavours)); + + s = ss = xstrdup(o); ++ l = 0; + for (;;) { + q = strchr(s, ','); + if (q) + *q = '\0'; + +- for (l = 0, i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++) ++ for (i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++) + if (strcmp(flavours[i].name, s) == 0) { + nap->auth_flavours[l++] = flavours[i].num; + break; +@@ -1125,6 +1129,9 @@ set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp) + s = ++q; + } + ++ if (l == 0) { ++ nap->auth_flavours[l++] = AUTH_UNIX; ++ } + nap->auth_flavourlen = l; + return ss; + } +@@ -1172,12 +1179,15 @@ add_nfs4_mntopts(const nfs4_args_t *nap, mntent_t *mntp, char *sec) + opts = xrealloc(mntp->mnt_opts, len); + xstrlcat(opts, buf, len); + ++#ifdef notdef ++ /* Already in the options */ + if (sec) { + xstrlcat(opts, ",", len); + xstrlcat(opts, MNTTAB_OPT_SEC, len); + xstrlcat(opts, "=", len); + xstrlcat(opts, sec, len); + } ++#endif + + mntp->mnt_opts = opts; + } diff --git a/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch b/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch new file mode 100644 index 0000000..3057d22 --- /dev/null +++ b/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch @@ -0,0 +1,58 @@ +commit 3369871a5e68484e231705bb0a893b4c6da85d17 +Author: zoulasc +Date: Mon Mar 7 18:05:07 2016 -0500 + + Default to "string" mount options for NFSv4 because the kernel does not + properly handle the auth_flavours[] field. Tested with nfs-utils-1.3.3 and + it always defaults to krb5i if string options are not used. Please note + that the "rw" option is not recognized by the linux kernel. + +diff --git a/conf/mount/mount_linux.c b/conf/mount/mount_linux.c +index d3841ce..de7708d 100644 +--- a/conf/mount/mount_linux.c ++++ b/conf/mount/mount_linux.c +@@ -450,7 +450,7 @@ do_mount_linux(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + return mount(mnt->mnt_fsname, + mnt->mnt_dir, + type, +- MS_MGC_VAL | flags, ++ flags, + data); + } + +@@ -566,9 +566,9 @@ mount_linux_nfs(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + plog(XLOG_DEBUG, "%s: port %d\n", __func__, + htons(mnt_data->addr.sin_port)); + } ++ flags |= MS_MGC_VAL; + if (amuDebug(D_TRACE)) { +- plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, +- MS_MGC_VAL | flags); ++ plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, flags); + plog(XLOG_DEBUG, "%s: updated nfs_args...", __func__); + print_nfs_args(mnt_data, 0); + } +@@ -610,14 +610,21 @@ mount_linux_nfs4(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + plog(XLOG_DEBUG, "%s: type %s\n", __func__, type); + plog(XLOG_DEBUG, "%s: version %d\n", __func__, mnt_data->version); + } ++#if 0 ++ flags |= MS_MGC_VAL; ++#endif + if (amuDebug(D_TRACE)) { +- plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, +- MS_MGC_VAL | flags); ++ plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, flags); + plog(XLOG_DEBUG, "%s: updated nfs_args...", __func__); + print_nfs_args(mnt_data, NFS_VERSION4); + } + ++#if 0 + errorcode = do_mount_linux(type, mnt, flags, data); ++#else ++ errorcode = do_mount_linux(type, mnt, flags, mnt->mnt_opts); ++#endif ++ + + return errorcode; + } diff --git a/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch b/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch new file mode 100644 index 0000000..ed7b9f3 --- /dev/null +++ b/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch @@ -0,0 +1,19 @@ +commit 6a12fc0acb3afb654ba5e6efdeb28b943e2efd3e +Author: zoulasc +Date: Thu Mar 31 14:56:53 2016 -0400 + + Fix SEGV on amq entries that print times. + +diff --git a/amq/amq.c b/amq/amq.c +index dc5fe02..04f9e4d 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -79,7 +79,7 @@ enum show_opt { + static void + time_print(time_type tt) + { +- time_t t = (time_t)*tt; ++ time_t t = (time_t)(intptr_t)tt; + struct tm *tp = localtime(&t); + printf("%02d/%02d/%04d %02d:%02d:%02d", + tp->tm_mon + 1, tp->tm_mday, diff --git a/am-utils-6.2-Fix-nfs-args-setting-code.patch b/am-utils-6.2-Fix-nfs-args-setting-code.patch new file mode 100644 index 0000000..96d0425 --- /dev/null +++ b/am-utils-6.2-Fix-nfs-args-setting-code.patch @@ -0,0 +1,71 @@ +commit 1c4c00a489d7aef115020b903dcd10201eb56ac0 +Author: zoulasc +Date: Thu Apr 30 14:24:39 2015 -0400 + + Fix nfs args setting code (raven at the maw dot net) + +diff --git a/ChangeLog b/ChangeLog +index fd05087..64be682 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2015-04-30 Christos Zoulas ++ ++ * fix compilation error in nfs args set code. ++ (raven at themaw.net) ++ + 2015-01-17 Christos Zoulas + + * Move libtool macro functions from m4/macros to m4 and delete +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index b577bab..87f64c3 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -1001,12 +1001,12 @@ compute_nfs23_args(nfs_args_t *nap, + + #ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */ + if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL))) +- nap->args.flags |= MNT2_NFS_OPT_SYMTTL; ++ nap->flags |= MNT2_NFS_OPT_SYMTTL; + #endif /* MNTTAB_OPT_SYMTTL */ + + #ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */ + if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH))) +- nap->args.flags |= MNT2_NFS_OPT_PGTHRESH; ++ nap->flags |= MNT2_NFS_OPT_PGTHRESH; + #endif /* MNT2_NFS_OPT_PGTHRESH */ + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) +@@ -1029,12 +1029,12 @@ compute_nfs23_args(nfs_args_t *nap, + return; + } + /* update the flags field for knconf */ +- nap->args.flags |= MNT2_NFS_OPT_KNCONF; ++ nap->flags |= MNT2_NFS_OPT_KNCONF; + #endif /* HAVE_TRANSPORT_TYPE_TLI */ + + #ifdef MNT2_NFS_OPT_FSNAME + nap->fsname = fs_name; +- nap->args.flags |= MNT2_NFS_OPT_FSNAME; ++ nap->flags |= MNT2_NFS_OPT_FSNAME; + #endif /* MNT2_NFS_OPT_FSNAME */ + + +@@ -1323,7 +1323,7 @@ compute_nfs4_args(nfs4_args_t *nap, + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) + if (amu_hasmntopt(mntp, MNTTAB_OPT_POSIX) != NULL) { +- nap->args.flags |= MNT2_NFS_OPT_POSIX; ++ nap->flags |= MNT2_NFS_OPT_POSIX; + # ifdef HAVE_NFS_ARGS_T_PATHCONF + nap->pathconf = NULL; + # endif /* HAVE_NFS_ARGS_T_PATHCONF */ +@@ -1333,7 +1333,7 @@ compute_nfs4_args(nfs4_args_t *nap, + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) + nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); + if (nap->maxgrouplist != 0) +- nap->args.flags |= MNT2_NFS_OPT_MAXGRPS; ++ nap->flags |= MNT2_NFS_OPT_MAXGRPS; + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + #ifdef HAVE_NFS_ARGS_T_OPTSTR diff --git a/am-utils-6.2-Improve-debugging-for-unmounting.patch b/am-utils-6.2-Improve-debugging-for-unmounting.patch new file mode 100644 index 0000000..564daa5 --- /dev/null +++ b/am-utils-6.2-Improve-debugging-for-unmounting.patch @@ -0,0 +1,36 @@ +commit 227ce116a307a7f38967639c94ad74970ee83700 +Author: zoulasc +Date: Tue Mar 8 23:30:38 2016 -0500 + + Improve debugging for unmounting. + +diff --git a/amd/map.c b/amd/map.c +index bcb2156..a6df44b 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -904,10 +904,8 @@ unmount_mp(am_node *mp) + int was_backgrounded = 0; + mntfs *mf = mp->am_al->al_mnt; + +-#ifdef notdef + plog(XLOG_INFO, "\"%s\" on %s timed out (flags 0x%x)", +- mp->am_path, mf->mf_mount, (int) mf->mf_flags); +-#endif /* notdef */ ++ mp->am_path, mf->mf_mount, (int) mf->mf_flags); + + #ifndef MNT2_NFS_OPT_SYMTTL + /* +@@ -938,11 +936,12 @@ unmount_mp(am_node *mp) + plog(XLOG_STATS, "file server %s is down - timeout of \"%s\" ignored", mf->mf_server->fs_host, mp->am_path); + mf->mf_flags |= MFF_LOGDOWN; + } ++ dlog("\"%s\" on %s server is down, deferred", mp->am_path, mf->mf_mount); + notify_child(mp, AMQ_UMNT_SERVER, 0, 0); + return 0; + } + +- dlog("\"%s\" on %s timed out", mp->am_path, mf->mf_mount); ++ dlog("\"%s\" on %s timed out, unmounting", mp->am_path, mf->mf_mount); + mf->mf_flags |= MFF_UNMOUNTING; + + #ifdef HAVE_FS_AUTOFS diff --git a/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch b/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch new file mode 100644 index 0000000..7c39f97 --- /dev/null +++ b/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch @@ -0,0 +1,530 @@ +commit 1c9cd2d03ab1561b7eee831af381eff781fcf41e +Author: zoulasc +Date: Fri Apr 8 15:29:33 2016 -0400 + + * Make hasmntval() return an 0 on error, 1 on success and + place the value in an argument. Update all users and + check properly for errors. Get rid of hasmntvalerr(). + * Add hasmntvaldelim() which takes a string delimiter. This + is now used to chop vers=4.1 to 4, so that we can parse the + version correctly (we don't care about the .1 part yet) + +--- + amd/autil.c | 10 ++---- + amd/ops_cdfs.c | 7 ++++ + amd/ops_nfs.c | 3 -- + amd/ops_pcfs.c | 10 ++++-- + amd/ops_ufs.c | 6 +++- + amd/srvr_nfs.c | 24 ++++++++++------ + hlfsd/hlfsd.c | 3 -- + include/am_utils.h | 4 +- + libamu/mount_fs.c | 79 ++++++++++++++++++++++++++++++++++++++--------------- + libamu/mtab.c | 41 ++++++++------------------- + 10 files changed, 109 insertions(+), 78 deletions(-) + +--- am-utils-6.2.orig/amd/autil.c ++++ am-utils-6.2/amd/autil.c +@@ -279,7 +279,7 @@ am_mounted(am_node *mp) + if (amu_hasmntopt(&mnt, "nounmount") || amu_hasmntopt(&mnt, "noumount")) + notimeout = 1; + /* utimeout=N option: user wants to unmount this option AND set timeout */ +- if ((mp->am_timeo = hasmntval(&mnt, "utimeout")) == 0) ++ if (!hasmntval(&mnt, "utimeout", &mp->am_timeo)) + mp->am_timeo = gopt.am_timeo; /* otherwise use default timeout */ + else + notimeout = 0; +@@ -480,8 +480,7 @@ amfs_mount(am_node *mp, mntfs *mf, char + mnt.mnt_type = HIDE_MOUNT_TYPE; + } + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 2; /* XXX: default to 2 retries */ + + /* +@@ -526,7 +525,7 @@ again: + nfs_args_t nfs_args; + am_nfs_handle_t *fhp, anh; + #ifndef HAVE_TRANSPORT_TYPE_TLI +- u_short port; ++ int port; + struct sockaddr_in sin; + #endif /* not HAVE_TRANSPORT_TYPE_TLI */ + +@@ -547,8 +546,7 @@ again: + /* as per POSIX, sin_len need not be set (used internally by kernel) */ + sin.sin_family = AF_INET; + sin.sin_addr = myipaddr; +- port = hasmntval(&mnt, MNTTAB_OPT_PORT); +- if (port) { ++ if (hasmntval(&mnt, MNTTAB_OPT_PORT, &port) && port > 0 && port < 65536) { + sin.sin_port = htons(port); + } else { + plog(XLOG_ERROR, "no port number specified for %s", dir); +--- am-utils-6.2.orig/amd/ops_cdfs.c ++++ am-utils-6.2/amd/ops_cdfs.c +@@ -190,7 +190,12 @@ mount_cdfs(char *mntdir, char *fs_name, + #endif /* HAVE_CDFS_ARGS_T_ISO_FLAGS */ + + #ifdef HAVE_CDFS_ARGS_T_ISO_PGTHRESH +- cdfs_args.iso_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH); ++ { ++ int thresh; ++ if (!hasmntval(&mnt, MNTTAB_OPT_PGTHRESH, &thresh) || thresh < 0) ++ thresh = 0; ++ cdfs_args.iso_pgthresh = thresh; ++ } + #endif /* HAVE_CDFS_ARGS_T_ISO_PGTHRESH */ + + #ifdef HAVE_CDFS_ARGS_T_NORRIP +--- am-utils-6.2.orig/amd/ops_nfs.c ++++ am-utils-6.2/amd/ops_nfs.c +@@ -888,8 +888,7 @@ mount_nfs_fh(am_nfs_handle_t *fhp, char + plog(XLOG_INFO, "mount_nfs_fh: NFS version %d", (int) nfs_version); + plog(XLOG_INFO, "mount_nfs_fh: using NFS transport %s", nfs_proto); + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 1; /* XXX */ + + genflags = compute_mount_flags(&mnt); +--- am-utils-6.2.orig/amd/ops_pcfs.c ++++ am-utils-6.2/amd/ops_pcfs.c +@@ -139,17 +139,19 @@ mount_pcfs(char *mntdir, char *fs_name, + #endif /* HAVE_PCFS_ARGS_T_FSPEC */ + + #ifdef HAVE_PCFS_ARGS_T_MASK +- pcfs_args.mask = 0777; /* this may be the msdos file modes */ +- if ((mask = hasmntval(&mnt, MNTTAB_OPT_MASK)) > 0) ++ if (hasmntval(&mnt, MNTTAB_OPT_MASK, &mask) && mask > 0) + pcfs_args.mask = mask; ++ else ++ pcfs_args.mask = 0777; /* this may be the msdos file modes */ + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "mount_pcfs: mask=%o (octal)", (u_int) pcfs_args.mask); + #endif /* HAVE_PCFS_ARGS_T_MASK */ + + #ifdef HAVE_PCFS_ARGS_T_DIRMASK +- pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */ +- if ((mask = hasmntval(&mnt, MNTTAB_OPT_DIRMASK)) > 0) ++ if (hasmntval(&mnt, MNTTAB_OPT_DIRMASK, &mask) && mask > 0) + pcfs_args.dirmask = mask; ++ else ++ pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */ + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "mount_pcfs: dirmask=%o (octal)", (u_int) pcfs_args.dirmask); + #endif /* HAVE_PCFS_ARGS_T_DIRMASK */ +--- am-utils-6.2.orig/amd/ops_ufs.c ++++ am-utils-6.2/amd/ops_ufs.c +@@ -144,7 +144,11 @@ mount_ufs(char *mntdir, char *fs_name, c + #endif /* HAVE_UFS_ARGS_T_FSPEC */ + + #ifdef HAVE_UFS_ARGS_T_UFS_PGTHRESH +- ufs_args.ufs_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH); ++ { ++ int thresh; ++ if (!hasmntval(&mnt, MNTTAB_OPT_PGTHRESH, &thresh) || thresh < 0) ++ thresh = 0; ++ ufs_args.ufs_pgthresh = thresh; + #endif /* HAVE_UFS_ARGS_T_UFS_PGTHRESH */ + + /* +--- am-utils-6.2.orig/amd/srvr_nfs.c ++++ am-utils-6.2/amd/srvr_nfs.c +@@ -704,10 +704,10 @@ find_nfs_srvr(mntfs *mf) + struct hostent *hp = NULL; + struct sockaddr_in *ip = NULL; + u_long nfs_version = 0; /* default is no version specified */ ++ int val; + u_long best_nfs_version = 0; + char *nfs_proto = NULL; /* no IP protocol either */ +- int nfs_port = 0; +- int nfs_port_opt = 0; ++ int nfs_port; + int fserver_is_down = 0; + + if (mf->mf_fo == NULL) { +@@ -721,7 +721,8 @@ find_nfs_srvr(mntfs *mf) + * are required or not. < 0 = no pings. + */ + mnt.mnt_opts = mf->mf_mopts; +- pingval = hasmntval(&mnt, "ping"); ++ if (!hasmntval(&mnt, "ping", &pingval) || pingval < 0) ++ pingval = 0; + + if (mf->mf_flags & MFF_NFS_SCALEDOWN) { + /* +@@ -739,7 +740,10 @@ find_nfs_srvr(mntfs *mf) + * to decide the highest NFS version to try. + */ + #ifdef MNTTAB_OPT_VERS +- nfs_version = hasmntval(&mnt, MNTTAB_OPT_VERS); ++ if (!hasmntvaldelim(&mnt, MNTTAB_OPT_VERS, ",.", &val) || val < 0) ++ nfs_version = 0; ++ else ++ nfs_version = val; + #endif /* MNTTAB_OPT_VERS */ + + #ifdef MNTTAB_OPT_PROTO +@@ -934,11 +938,11 @@ find_nfs_srvr(mntfs *mf) + * If the port has been determined from the portmapper, use that. + * Default to NFS_PORT otherwise (cf. RFC 2054, 3). + */ +- nfs_port_opt = hasmntval(&mnt, MNTTAB_OPT_PORT); +- if (nfs_port_opt > 0) +- nfs_port = htons(nfs_port_opt); +- if (!nfs_port) ++ if (!hasmntval(&mnt, MNTTAB_OPT_PORT, &nfs_port) ++ || nfs_port > 65535 || nfs_port <= 0) + nfs_port = htons(NFS_PORT); ++ else ++ nfs_port = htons(nfs_port); + + dlog("%s: using port %d for nfs on %s", __func__, + (int) ntohs(nfs_port), host); +@@ -1050,7 +1054,9 @@ no_dns: + fs->fs_flags |= FSF_PING_UNINIT; /* pinger hasn't been initialized */ + np = ALLOC(struct nfs_private); + memset((voidp) np, 0, sizeof(*np)); +- np->np_mountd = htons(hasmntval(&mnt, "mountport")); ++ if (!hasmntval(&mnt, "mountport", &val) || val < 0) ++ val = 0; ++ np->np_mountd = htons(val); + if (np->np_mountd == 0) { + np->np_mountd_inval = 'Y'; + np->np_xid = XID_ALLOC(); +--- am-utils-6.2.orig/hlfsd/hlfsd.c ++++ am-utils-6.2/hlfsd/hlfsd.c +@@ -530,8 +530,7 @@ main(int argc, char *argv[]) + + genflags = compute_mount_flags(&mnt); + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 1; /* XXX */ + + memmove(&anh.v2, root_fhp, sizeof(*root_fhp)); +--- am-utils-6.2.orig/include/am_utils.h ++++ am-utils-6.2/include/am_utils.h +@@ -290,8 +290,8 @@ extern int compute_mount_flags(mntent_t + extern void discard_nfs_args(void *, u_long); + extern u_long get_amd_program_number(void); + extern int getcreds(struct svc_req *, uid_t *, gid_t *, SVCXPRT *); +-extern int hasmntval(mntent_t *, char *); +-extern unsigned int hasmntvalerr(mntent_t *, char *, int *); ++extern int hasmntval(mntent_t *, char *, int *); ++extern int hasmntvaldelim(mntent_t *, char *, const char *, int *); + extern char *hasmntstr(mntent_t *, char *); + extern char *hasmnteq(mntent_t *, char *); + extern char *haseq(char *); +--- am-utils-6.2.orig/libamu/mount_fs.c ++++ am-utils-6.2/libamu/mount_fs.c +@@ -188,8 +188,10 @@ static void + addvers(char *zopts, size_t l, mntent_t *mnt, u_long have_vers, + u_long want_vers) + { +- if (have_vers == want_vers && +- hasmntval(mnt, MNTTAB_OPT_VERS) != want_vers) { ++ int val; ++ if (have_vers == want_vers ++ && hasmntvaldelim(mnt, MNTTAB_OPT_VERS, ".,", &val) ++ && (u_long)val != want_vers) { + char optsbuf[48]; + xsnprintf(optsbuf, sizeof(optsbuf), + "%s=%d", MNTTAB_OPT_VERS, want_vers); +@@ -391,7 +393,7 @@ compute_nfs_attrcache_flags(struct nfs_c + * on the values of the attribute caches. + */ + #ifdef MNTTAB_OPT_ACTIMEO +- err_acval = hasmntvalerr(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */ ++ err_acval = !hasmntval(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */ + #endif /* MNTTAB_OPT_ACTIMEO */ + + /*** acregmin ***/ +@@ -402,7 +404,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACREGMIN + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMIN, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACREGMIN, &tmp); + nap->acregmin = tmp; + # else /* not MNTTAB_OPT_ACREGMIN */ + nap->acregmin = 0; +@@ -423,7 +425,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACREGMAX + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMAX, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACREGMAX, &tmp); + nap->acregmax = tmp; + # else /* not MNTTAB_OPT_ACREGMAX */ + nap->acregmax = 0; +@@ -444,7 +446,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACDIRMIN + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMIN, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACDIRMIN, &tmp); + nap->acdirmin = tmp; + # else /* not MNTTAB_OPT_ACDIRMIN */ + nap->acdirmin = 0; +@@ -465,7 +467,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACDIRMAX + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMAX, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACDIRMAX, &tmp); + nap->acdirmax = tmp; + # else /* not MNTTAB_OPT_ACDIRMAX */ + nap->acdirmax = 0; +@@ -492,6 +494,7 @@ static void + compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp, + const char *nfs_proto, u_long nfs_version) + { ++ int val; + #ifdef MNT2_NFS_OPT_TCP + if (nfs_proto && STREQ(nfs_proto, "tcp")) + nap->flags |= MNT2_NFS_OPT_TCP; +@@ -536,7 +539,10 @@ compute_nfs_common_args(struct nfs_commo + # endif /* not MNTTAB_OPT_RESVPORT */ + #endif /* MNT2_NFS_OPT_RESVPORT */ + +- nap->rsize = hasmntval(mntp, MNTTAB_OPT_RSIZE); ++ if (!hasmntval(mntp, MNTTAB_OPT_RSIZE, &val) || val <= 0) ++ nap->rsize = 0; ++ else ++ nap->rsize = val; + #ifdef MNT2_NFS_OPT_RSIZE + if (nap->rsize) + nap->flags |= MNT2_NFS_OPT_RSIZE; +@@ -544,7 +550,10 @@ compute_nfs_common_args(struct nfs_commo + if (nfs_version == NFS_VERSION && nap->rsize > 8192) + nap->rsize = 8192; + +- nap->wsize = hasmntval(mntp, MNTTAB_OPT_WSIZE); ++ if (!hasmntval(mntp, MNTTAB_OPT_WSIZE, &val) || val <= 0) ++ nap->wsize = 0; ++ else ++ nap->wsize = val; + #ifdef MNT2_NFS_OPT_WSIZE + if (nap->wsize) + nap->flags |= MNT2_NFS_OPT_WSIZE; +@@ -552,13 +561,19 @@ compute_nfs_common_args(struct nfs_commo + if (nfs_version == NFS_VERSION && nap->wsize > 8192) + nap->wsize = 8192; + +- nap->timeo = hasmntval(mntp, MNTTAB_OPT_TIMEO); ++ if (!hasmntval(mntp, MNTTAB_OPT_TIMEO, &val) || val <= 0) ++ nap->timeo = 0; ++ else ++ nap->timeo = val; + #ifdef MNT2_NFS_OPT_TIMEO + if (nap->timeo) + nap->flags |= MNT2_NFS_OPT_TIMEO; + #endif /* MNT2_NFS_OPT_TIMEO */ + +- nap->retrans = hasmntval(mntp, MNTTAB_OPT_RETRANS); ++ if (!hasmntval(mntp, MNTTAB_OPT_RETRANS, &val) || val <= 0) ++ nap->retrans = 0; ++ else ++ nap->retrans = val; + #ifdef MNT2_NFS_OPT_RETRANS + if (nap->retrans) + nap->flags |= MNT2_NFS_OPT_RETRANS; +@@ -861,6 +876,7 @@ compute_nfs23_args(nfs_args_t *nap, + char *host_name, + char *fs_name) + { ++ int val; + struct nfs_common_args a; + /* initialize just in case */ + memset((voidp) nap, 0, sizeof(nfs_args_t)); +@@ -995,18 +1011,30 @@ compute_nfs23_args(nfs_args_t *nap, + /************************************************************************/ + + #ifdef MNT2_NFS_OPT_BIODS +- if ((nap->biods = hasmntval(mntp, MNTTAB_OPT_BIODS))) ++ if (!hasmntval(mntp, MNTTAB_OPT_BIODS, &val) || val <= 0) ++ nap->biods = 0; ++ else { ++ nap->biods = val; + nap->flags |= MNT2_NFS_OPT_BIODS; ++ } + #endif /* MNT2_NFS_OPT_BIODS */ + + #ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */ +- if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL))) ++ if (!hasmntval(mntp, MNTTAB_OPT_SYMTTL, &val) || val <= 0) ++ nap->symttl = 0; ++ else { ++ nap->symttl = val; + nap->flags |= MNT2_NFS_OPT_SYMTTL; ++ } + #endif /* MNTTAB_OPT_SYMTTL */ + + #ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */ +- if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH))) ++ if (!hasmntval(mntp, MNTTAB_OPT_PGTHRESH, &val) || val <= 0) ++ nap->pg_thresh = 0; ++ else { ++ nap->pg_thresh = val; + nap->flags |= MNT2_NFS_OPT_PGTHRESH; ++ } + #endif /* MNT2_NFS_OPT_PGTHRESH */ + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) +@@ -1020,7 +1048,7 @@ compute_nfs23_args(nfs_args_t *nap, + + #ifdef HAVE_TRANSPORT_TYPE_TLI + /* set up syncaddr field */ +- nap->syncaddr = (struct netbuf *) NULL; ++ nap->syncaddr = NULL; + + /* set up knconf field */ + if (get_knetconfig(&nap->knconf, nfsncp, nfs_proto) < 0) { +@@ -1043,9 +1071,12 @@ compute_nfs23_args(nfs_args_t *nap, + #endif /* HAVE_NFS_ARGS_T_OPTSTR */ + + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) +- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); +- if (nap->maxgrouplist != 0) ++ if (!hasmntval(mntp, MNTTAB_OPT_MAXGROUPS, &val) || val <= 0) ++ nap->maxgrouplist = 0; ++ else { ++ nap->maxgrouplist = val; + nap->flags |= MNT2_NFS_OPT_MAXGRPS; ++ } + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + /************************************************************************/ +@@ -1267,6 +1298,7 @@ compute_nfs4_args(nfs4_args_t *nap, + { + char *s; + struct nfs_common_args a; ++ int val; + uint16_t nfs_port; + + /* initialize just in case */ +@@ -1304,11 +1336,10 @@ compute_nfs4_args(nfs4_args_t *nap, + nap->host_addr = xmalloc(nap->host_addrlen); + memcpy(nap->host_addr, ip_addr, nap->host_addrlen); + +- nfs_port = hasmntval(mntp, MNTTAB_OPT_PORT); +- if (nfs_port == 0) ++ if (!hasmntval(mntp, MNTTAB_OPT_PORT, &val) || val <= 0 || val > 65536) + nfs_port = htons(NFS_PORT); + else +- nfs_port = htons(nfs_port); ++ nfs_port = htons(val); + + ((struct sockaddr_in *)nap->host_addr)->sin_port = nfs_port; + +@@ -1341,9 +1372,13 @@ compute_nfs4_args(nfs4_args_t *nap, + #endif /* MNT2_NFS_OPT_POSIX && MNTTAB_OPT_POSIX */ + + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) +- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); +- if (nap->maxgrouplist != 0) ++ nap->maxgrouplist = ++ if (!hasmntval(mntp, MNTTAB_OPT_MAXGROUPS, &val) || val <= 0) ++ nap->maxgrouplist = 0; ++ else { ++ nap->maxgrouplist = val; + nap->flags |= MNT2_NFS_OPT_MAXGRPS; ++ } + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + #ifdef HAVE_NFS_ARGS_T_OPTSTR +--- am-utils-6.2.orig/libamu/mtab.c ++++ am-utils-6.2/libamu/mtab.c +@@ -133,22 +133,12 @@ hasmnteq(mntent_t *mnt, char *opt) + + + /* +- * Wrapper around hasmntvalerr(), which retains backwards compatibiliy with +- * older use of hasmntval(). +- * +- * XXX: eventually, all use of hasmntval() should be replaced with +- * hasmntvalerr(). ++ * Wrapper around hasmntvaldelim(), which uses the standard "," delim + */ + int +-hasmntval(mntent_t *mnt, char *opt) ++hasmntval(mntent_t *mnt, char *opt, int *valp) + { +- int err, val = 0; +- +- err = hasmntvalerr(mnt, opt, &val); +- if (err) /* if there was an error (hasmntvalerr returned 1) */ +- return 0; /* redundant: val==0 above, but leave here for clarity */ +- /* otherwise there was no error */ +- return val; ++ return hasmntvaldelim(mnt, opt, ",", valp); + } + + +@@ -158,36 +148,31 @@ hasmntval(mntent_t *mnt, char *opt) + * valp (argument won't be touched if no value is set, for example due to an + * error). + * +- * Returns non-zero (1) on error; returns 0 on success. +- * +- * XXX: eventually, all use of hasmntval() should be replaced with +- * hasmntvalerr(). ++ * Returns 0 on error; returns 1 on success. + */ +-unsigned int +-hasmntvalerr(mntent_t *mnt, char *opt, int *valp) ++int ++hasmntvaldelim(mntent_t *mnt, char *opt, const char *delim, int *valp) + { + char *str = amu_hasmntopt(mnt, opt); +- int err = 1; /* 1 means no good value was set (an error) */ + char *eq, *endptr; + long int i; + + /* exit if no option specificed */ +- if (!str) { +- goto out; +- } ++ if (!str) ++ return 0; + + eq = hasmnteq(mnt, opt); + + if (!eq) { /* no argument to option ('=' sign was missing) */ + plog(XLOG_MAP, "numeric option to \"%s\" missing", opt); +- goto out; ++ return 0; + } + + /* if got here, then we had an '=' after option name */ + endptr = NULL; + i = strtol(eq, &endptr, 0); /* hex and octal allowed ;-) */ + if (!endptr || +- (endptr != eq && (*endptr == ',' || *endptr == '\0'))) { ++ (endptr != eq && (*endptr == '\0' || strchr(delim, *endptr)))) { + /* + * endptr set means strtol saw a non-digit. If the non-digit is a + * comma, it's probably the start of the next option. If the comma is +@@ -198,15 +183,13 @@ hasmntvalerr(mntent_t *mnt, char *opt, i + * string. + */ + *valp = (int) i; /* set good value */ +- err = 0; /* no error */ ++ return 1; + } else { + /* whatever was after the '=' sign wasn't a number */ + plog(XLOG_MAP, "invalid numeric option in \"%s\": \"%s\"", opt, str); + /* fall through to error/exit processing */ ++ return 0; + } +- +- out: +- return err; + } + + diff --git a/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch b/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch new file mode 100644 index 0000000..78ba30b --- /dev/null +++ b/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch @@ -0,0 +1,45 @@ +commit e7d1bd38b1d1de6b1bec603eeff915ebb57f3c37 +Author: zoulasc +Date: Thu Mar 10 17:50:34 2016 -0500 + + - There is really no ti-rpc nfsv4, so don't send one; instead send a v3 for now. + +diff --git a/amd/srvr_nfs.c b/amd/srvr_nfs.c +index b7c852c..1418a1a 100644 +--- a/amd/srvr_nfs.c ++++ b/amd/srvr_nfs.c +@@ -140,6 +140,7 @@ create_ping_payload(u_long nfs_version) + { + XDR ping_xdr; + struct rpc_msg ping_msg; ++ int rpc_version; + + /* + * Non nfs mounts like /afs/glue.umd.edu have ended up here. +@@ -150,7 +151,17 @@ create_ping_payload(u_long nfs_version) + } else + plog(XLOG_INFO, "%s: nfs_version: %d", __func__, (int) nfs_version); + +- rpc_msg_init(&ping_msg, NFS_PROGRAM, nfs_version, NFSPROC_NULL); ++ /* ++ * There is really no ti-rpc version for NFSv4; most servers respond ++ * with "program unavailable", which is ok since we don't check the ++ * payload, we just care about the pings. Some servers though are ++ * antisocial (Isilon) and don't respond (which is their right to do). ++ * Eventually we should make a new mechanism to do server pings for ++ * NFSv4, but for now it is easiest to downgrade the RPC version to 3. ++ */ ++ rpc_version = nfs_version == 4 ? 3 : nfs_version; ++ ++ rpc_msg_init(&ping_msg, NFS_PROGRAM, rpc_version, NFSPROC_NULL); + + /* + * Create an XDR endpoint +@@ -600,6 +611,7 @@ nfs_keepalive(voidp v) + case ENETUNREACH: + case EHOSTDOWN: + case EHOSTUNREACH: ++ dlog("Failed to NFS ping to %s (%d)", fs->fs_host, error); + np->np_ping = MAX_ALLOWED_PINGS; /* immediately down */ + np->np_ttl = (time_t) 0; + /* diff --git a/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch b/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch new file mode 100644 index 0000000..64fbaff --- /dev/null +++ b/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch @@ -0,0 +1,30 @@ +commit ad416c8656c2dff6f1bcffee8517284de94c9d92 +Author: zoulasc +Date: Thu May 12 10:21:55 2016 -0400 + + Update the ctime of the directory too, since it changed. From Mark Davies + +diff --git a/amd/autil.c b/amd/autil.c +index 35d8708..f44a0e2 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -183,6 +183,7 @@ forcibly_timeout_mp(am_node *mp) + * more. + */ + clocktime(&mp->am_parent->am_fattr.na_mtime); ++ mp->am_parent->am_fattr.na_ctime = mp->am_parent->am_fattr.na_mtime; + reschedule_timeout_mp(); + } + } +@@ -312,8 +313,10 @@ am_mounted(am_node *mp) + /* + * Update mtime of parent node (copying "struct nfstime" in '=' below) + */ +- if (mp->am_parent && mp->am_parent->am_al->al_mnt) ++ if (mp->am_parent && mp->am_parent->am_al->al_mnt) { + mp->am_parent->am_fattr.na_mtime = mp->am_fattr.na_mtime; ++ mp->am_parent->am_fattr.na_ctime = mp->am_fattr.na_mtime; ++ } + + /* + * This is ugly, but essentially unavoidable diff --git a/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch b/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch new file mode 100644 index 0000000..ea310d0 --- /dev/null +++ b/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch @@ -0,0 +1,94 @@ +commit a5ea57a64a1d70486e8d8ab2da944e50ca51b836 +Author: zoulasc +Date: Tue Mar 8 23:31:26 2016 -0500 + + - add more debugging in the unmount path + - if the EXPIRE_MULTI call fails, with EAGAIN, fail back to the EXPIRE call + seems to fix unmounting with nfsv4 volumes. + +diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c +index d543979..5b4ac06 100644 +--- a/conf/autofs/autofs_linux.c ++++ b/conf/autofs/autofs_linux.c +@@ -365,6 +365,7 @@ autofs_expire_one(am_node *mp, char *name, autofs_wqt_t token) + + ap = find_ap(ap_path); + if (ap == NULL) { ++ dlog("%s: could not find %s", __func__, ap_path); + /* not found??? not sure what to do here... */ + send_fail(fh->ioctlfd, token); + goto out; +@@ -376,6 +377,7 @@ autofs_expire_one(am_node *mp, char *name, autofs_wqt_t token) + p->next = fh->pending_umounts; + fh->pending_umounts = p; + ++ dlog("%s: unmount for %s", __func__, ap_path); + unmount_mp(ap); + + out: +@@ -426,6 +428,7 @@ autofs_missing_one(am_node *mp, autofs_wqt_t wait_queue_token, char *name) + dlog("Mount still pending, not sending autofs reply yet"); + return; + } ++ dlog("%s: lookup failed for %s/%s", __func__, mp->am_path, name); + autofs_lookup_failed(mp, name); + } + mp->am_stats.s_lookup++; +@@ -872,15 +875,42 @@ autofs_compute_mount_flags(mntent_t *mnt) + return 0; + } + ++static int autofs_expire_4(am_node *mp) ++{ ++ struct autofs_packet_expire pkt; ++ autofs_fh_t *fh = mp->am_autofs_fh; ++ ++ dlog("Calling AUTOFS_IOC_EXPIRE"); ++ if (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE, &pkt) == -1) ++ { ++ dlog("AUTOFS_IOC_EXPIRE for %s failed %d", mp->am_path, errno); ++ return -1; ++ } ++ ++ autofs_handle_expire(mp, &pkt); ++ return 0; ++} ++ + + #if AUTOFS_MAX_PROTO_VERSION >= 4 + static int autofs_timeout_mp_task(void *arg) + { + am_node *mp = (am_node *)arg; + autofs_fh_t *fh = mp->am_autofs_fh; +- int now = 0; +- +- while (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE_MULTI, &now) == 0); ++ int how = AUTOFS_EXP_IMMEDIATE; ++ ++ for (;;) ++ { ++ dlog("Calling AUTOFS_IOC_EXPIRE_MULTI"); ++ if (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE_MULTI, &how) == -1) ++ { ++ dlog("AUTOFS_IOC_EXPIRE_MULTI for %s failed %d", mp->am_path, errno); ++ if (errno != EAGAIN) ++ break; ++ if (autofs_expire_4(mp) == -1) ++ break; ++ } ++ } + return 0; + } + #endif /* AUTOFS_MAX_PROTO_VERSION >= 4 */ +@@ -895,9 +925,8 @@ void autofs_timeout_mp(am_node *mp) + mp->am_autofs_ttl = now + gopt.am_timeo_w; + + if (fh->version < 4) { +- struct autofs_packet_expire pkt; +- while (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE, &pkt) == 0) +- autofs_handle_expire(mp, &pkt); ++ while (autofs_expire_4(mp) == 0) ++ continue; + return; + } + diff --git a/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch b/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch new file mode 100644 index 0000000..6271797 --- /dev/null +++ b/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch @@ -0,0 +1,19 @@ +commit a187041e062c5b656def30a3ec282156360003f3 +Author: Christos Zoulas +Date: Wed Jan 21 23:28:46 2015 -0500 + + don't use logical && when & is meant + +diff --git a/amd/map.c b/amd/map.c +index fce8273..0d404cf 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -752,7 +752,7 @@ umount_exported(void) + } else { + am_unmounted(mp); + } +- if (!(mf->mf_flags && (MFF_UNMOUNTING|MFF_MOUNTED))) ++ if (!(mf->mf_flags & (MFF_UNMOUNTING|MFF_MOUNTED))) + exported_ap[i] = NULL; + } else { + /* diff --git a/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch b/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch new file mode 100644 index 0000000..2ddb6d1 --- /dev/null +++ b/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch @@ -0,0 +1,57 @@ +am-utils-6.2 - fix compiler assignment warning due to libtirpc + +From: Ian Kent + +When using libtirpc there is a compiler warning on an assignment in +the amq_program_1() function. + +This warning was due to libtirpc using struct sockaddr_in6 for some +address fields in the transport structure as it is backward compatible +with struct sockaddr_in when IPv4 is in use. + +But if TLI is in use svc_getcaller() may not be defined or, if it is, +doesn't work as expected. + +So change to using amu_svc_getcaller(), which deals with the needed +cast for libtirpc, and handle the NULL return if TLI is being used. + +Signed-off-by: Ian Kent +--- + amd/amq_svc.c | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +diff --git a/amd/amq_svc.c b/amd/amq_svc.c +index 1f2b3d6..40f79fa 100644 +--- a/amd/amq_svc.c ++++ b/amd/amq_svc.c +@@ -162,15 +162,21 @@ amq_program_1(struct svc_req *rqstp, SVCXPRT *transp) + + #if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) + if (gopt.flags & CFM_USE_TCPWRAPPERS) { +- struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt); +- char *remote_hostname = inet_ntoa(remote_addr->sin_addr); +- +- if (!amqsvc_is_client_allowed(remote_addr)) { +- plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); +- svcerr_auth(transp, AUTH_FAILED); +- return; +- } else { +- dlog("Amd allowed remote amq service to %s", remote_hostname); ++ struct sockaddr_in *remote_addr = amu_svc_getcaller(rqstp->rq_xprt); ++ char *remote_hostname; ++ ++ /* Check the return from amu_svc_getcaller() becuase it's always NULL ++ * if TLI is in use. ++ */ ++ if (remote_addr) { ++ remote_hostname = inet_ntoa(remote_addr->sin_addr); ++ if (!amqsvc_is_client_allowed(remote_addr)) { ++ plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); ++ svcerr_auth(transp, AUTH_FAILED); ++ return; ++ } else { ++ dlog("Amd allowed remote amq service to %s", remote_hostname); ++ } + } + } + #endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ diff --git a/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch b/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch new file mode 100644 index 0000000..6c5c026 --- /dev/null +++ b/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch @@ -0,0 +1,24 @@ +am-utils-6.2 - fix logical not comparison in get_ldap_timestamp() + +From: Ian Kent + +Looks like the not in this comparison is not meant to be applied to *ts. + +Signed-off-by: Ian Kent +--- + amd/info_ldap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/amd/info_ldap.c b/amd/info_ldap.c +index cfed6fd..ecfc210 100644 +--- a/amd/info_ldap.c ++++ b/amd/info_ldap.c +@@ -446,7 +446,7 @@ get_ldap_timestamp(ALD *a, char *map, time_t *ts) + vals[0], map); + err = ENOENT; + } +- if (!*ts > 0) { ++ if (!(*ts > 0)) { + plog(XLOG_USER, "Nonpositive timestamp %ld for map %s\n", + (u_long) *ts, map); + err = ENOENT; diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch new file mode 100644 index 0000000..ca3b397 --- /dev/null +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -0,0 +1,54 @@ +am-utils-6.2 - fix umount to mount race + +From: Richard P + +If a mount request arrives while its mount fs is being umounted the +the reference count of the mount fs never reaches 1 so the location +MF_MOUNTED is not cleared and the mount fs instance is not freed. + +This leads to amd thinking the mount fs is still mounted and the +mount request succeeds without its corresponding target being +mounted. + +This patch from Richard P (with an added fix to a log message) +fixes the problem. + +Signed-off-by: Richard P +Signed-off-by: Ian Kent +--- + amd/amfs_generic.c | 7 +++++-- + amd/autil.c | 6 ++++++ + 2 files changed, 11 insertions(+), 2 deletions(-) + +--- am-utils-6.2.orig/amd/amfs_generic.c ++++ am-utils-6.2/amd/amfs_generic.c +@@ -743,9 +743,12 @@ amfs_bgmount(struct continuation *cp) + + if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { + /* +- * Still mounting - retry later ++ * Still mounting or umounting - retry later + */ +- dlog("mount of \"%s\" already pending", mf->mf_info); ++ if (mf->mf_flags & MFF_MOUNTING) ++ dlog("mount of \"%s\" already pending", mf->mf_info); ++ else ++ dlog("unmount of \"%s\" already pending", mf->mf_info); + goto retry; + } + +--- am-utils-6.2.orig/amd/autil.c ++++ am-utils-6.2/amd/autil.c +@@ -703,6 +703,12 @@ am_unmounted(am_node *mp) + } + + /* ++ * Clear the mounted flag in case there is a pending mount with ++ * the same target fs. ++ */ ++ mf->mf_flags &= ~MFF_MOUNTED; ++ ++ /* + * If this is a pseudo-directory then adjust the link count + * in the parent + */ diff --git a/am-utils-6.2-make-sure-variables-are-initialized.patch b/am-utils-6.2-make-sure-variables-are-initialized.patch new file mode 100644 index 0000000..b5449de --- /dev/null +++ b/am-utils-6.2-make-sure-variables-are-initialized.patch @@ -0,0 +1,20 @@ +commit 54da7c8206e38d0bf08a250835553754a1235360 +Author: Christos Zoulas +Date: Wed Jan 21 23:28:33 2015 -0500 + + make sure variables are initialized + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 7192a6a..30effba 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1711,6 +1711,9 @@ am_nfs3_fsstat_3_svc(am_FSSTAT3args *argp, struct svc_req *rqstp) + if ((gopt.flags & CFM_SHOW_STATFS_ENTRIES) && + mp->am_al->al_mnt && mp->am_al->al_mnt->mf_mopts) { + mnt.mnt_opts = mp->am_al->al_mnt->mf_mopts; ++ blocks = 0; ++ bfree = 0; ++ bavail = 0; + if (amu_hasmntopt(&mnt, "browsable")) { + count_map_entries(mp, &blocks, &bfree, &bavail); + } diff --git a/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch b/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch new file mode 100644 index 0000000..404e51f --- /dev/null +++ b/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch @@ -0,0 +1,26 @@ +commit 116309607c437e302dafa1efb60330f54f815761 +Author: Christos Zoulas +Date: Sat Jan 17 12:21:24 2015 -0500 + + print_nfs_common_args() is only needed with DEBUG + +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index b5576bd..b577bab 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -647,6 +647,7 @@ compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp, + #endif /* defined(MNT2_NFS_OPT_XLATECOOKIE) && defined(MNTTAB_OPT_XLATECOOKIE) */ + } + ++#ifdef DEBUG + static void + print_nfs_common_args(const struct nfs_common_args *a) + { +@@ -664,6 +665,7 @@ print_nfs_common_args(const struct nfs_common_args *a) + plog(XLOG_DEBUG, "NA->acdirmax = %lu", a->acdirmax); + #endif /* HAVE_NFS_ARGS_T_ACREGMIN */ + } ++#endif + + static void + discard_nfs23_args(nfs_args_t *nap) diff --git a/am-utils-6.2-remove-set-but-not-used-variable-again.patch b/am-utils-6.2-remove-set-but-not-used-variable-again.patch new file mode 100644 index 0000000..b4dcf94 --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-again.patch @@ -0,0 +1,26 @@ +commit a87188b9f0596651ce987253a6af23aca4b08b75 +Author: Christos Zoulas +Date: Sat Jan 17 12:42:55 2015 -0500 + + remove set but not used variable + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index b3ad5fc..6326007 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -418,7 +418,6 @@ u_long + get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const char *proto, u_long def) + { + CLIENT *clnt; +- int again = 0; + enum clnt_stat clnt_stat; + struct timeval tv; + int sock; +@@ -433,7 +432,6 @@ get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const c + nfs_version = def; + else + nfs_version = NFS_VERS_MAX; +- again = 1; + } + tv.tv_sec = 2; /* retry every 2 seconds, but also timeout */ + tv.tv_usec = 0; diff --git a/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch b/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch new file mode 100644 index 0000000..1f08d8a --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch @@ -0,0 +1,28 @@ +commit ed717dad0fee421744a24e6fb43e09d62b3f898d +Author: Christos Zoulas +Date: Sat Jan 17 12:45:22 2015 -0500 + + remove set but not used variable + +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index 25d734b..c352a32 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -1153,7 +1153,6 @@ amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op) + { + am_node *new_mp; + am_loc **al_array; +- int mp_error; + + dlog("in amfs_generic_lookup_child"); + +@@ -1178,9 +1177,6 @@ amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op) + return new_mp; + } + +- /* save error_return */ +- mp_error = *error_return; +- + al_array = amfs_lookup_loc(new_mp, error_return); + if (!al_array) { + new_mp->am_error = new_mp->am_al->al_mnt->mf_error = *error_return; diff --git a/am-utils-6.2-remove-set-but-not-used-variable-s.patch b/am-utils-6.2-remove-set-but-not-used-variable-s.patch new file mode 100644 index 0000000..20f5911 --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-s.patch @@ -0,0 +1,38 @@ +commit 79bb90caf12d2713b4736c3820135f0f00424f10 +Author: Christos Zoulas +Date: Sat Jan 17 12:29:03 2015 -0500 + + remove set but not used variable + +diff --git a/hlfsd/hlfsd.c b/hlfsd/hlfsd.c +index 686bb63..701abcd 100644 +--- a/hlfsd/hlfsd.c ++++ b/hlfsd/hlfsd.c +@@ -144,7 +144,6 @@ main(int argc, char *argv[]) + int opterrs = 0; + int retry; + int soNFS; /* NFS socket */ +- int s = -99; + mntent_t mnt; + nfs_args_t nfs_args; + am_nfs_handle_t anh; +@@ -449,17 +448,16 @@ main(int argc, char *argv[]) + * set this signal handler. + */ + if (amuDebug(D_DAEMON)) { +- s = -99; + while (stoplight != SIGUSR2) { + plog(XLOG_INFO, "parent waits for child to setup (stoplight=%d)", stoplight); + #ifdef HAVE_SIGSUSPEND + { + sigset_t mask; + sigemptyset(&mask); +- s = sigsuspend(&mask); /* wait for child to set up */ ++ (void)sigsuspend(&mask); /* wait for child to set up */ + } + #else /* not HAVE_SIGSUSPEND */ +- s = sigpause(0); /* wait for child to set up */ ++ (void)sigpause(0); /* wait for child to set up */ + #endif /* not HAVE_SIGSUSPEND */ + sleep(1); + } diff --git a/am-utils-6.2-remove-unused-function-show_map.patch b/am-utils-6.2-remove-unused-function-show_map.patch new file mode 100644 index 0000000..f7b6648 --- /dev/null +++ b/am-utils-6.2-remove-unused-function-show_map.patch @@ -0,0 +1,22 @@ +commit f61becdba8df1d6d515f5476d312d3cf4e933946 +Author: Christos Zoulas +Date: Sat Jan 17 12:43:32 2015 -0500 + + remove unused function + +diff --git a/amq/amq.c b/amq/amq.c +index e99732f..5d4ed7a 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -256,11 +256,6 @@ show_mi(amq_mount_info_list *ml, enum show_opt e, int *mwid, int *dwid, int *twi + } + + static void +-show_map(amq_map_info *mi) +-{ +-} +- +-static void + show_mapinfo(amq_map_info_list *ml, enum show_opt e, int *nwid, int *wwid) + { + u_int i; diff --git a/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch b/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch new file mode 100644 index 0000000..9b5fbc4 --- /dev/null +++ b/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch @@ -0,0 +1,59 @@ +commit 76e1a5ddc9ef9730205b2da2ed6b654d8fbaef40 +Author: Christos Zoulas +Date: Sat Jan 17 12:27:56 2015 -0500 + + uid_t might be a different size than unsigned int, so XXX: truncate. + +diff --git a/hlfsd/stubs.c b/hlfsd/stubs.c +index b26e5f4..70876b7 100644 +--- a/hlfsd/stubs.c ++++ b/hlfsd/stubs.c +@@ -60,6 +60,21 @@ static int started; + static am_nfs_fh slink; + static am_nfs_fh un_fhandle; + ++static void ++xgetuid(uid_t *uid, const void *p) ++{ ++ u_int xuid; ++ (void)memcpy(&xuid, p, sizeof(xuid)); ++ *uid = xuid; ++} ++ ++static void ++xputuid(void *p, uid_t uid) ++{ ++ u_int xuid = uid; ++ (void)memcpy(p, &xuid, sizeof(xuid)); ++} ++ + /* + * GLOBALS: + */ +@@ -160,7 +175,7 @@ nfsproc_getattr_2_svc(am_nfs_fh *argp, struct svc_req *rqstp) + if (gid != hlfs_gid) { + res.ns_status = NFSERR_STALE; + } else { +- (void)memcpy(&uid, argp->fh_data, sizeof(uid)); ++ xgetuid(&uid, argp->fh_data); + if (plt_search(uid) != (uid2home_t *) NULL) { + res.ns_status = NFS_OK; + un_fattr.na_fileid = uid; +@@ -278,7 +293,7 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp) + un_fattr.na_fileid = untab[idx].uid; + res.dr_u.dr_drok_u.drok_attributes = un_fattr; + memset(&un_fhandle, 0, sizeof(un_fhandle)); +- memcpy(un_fhandle.fh_data, &untab[idx].uid, sizeof(untab[idx].uid)); ++ xputuid(un_fhandle.fh_data, untab[idx].uid); + xstrlcpy((char *) &un_fhandle.fh_data[sizeof(int)], + untab[idx].username, + sizeof(am_nfs_fh) - sizeof(int)); +@@ -333,7 +348,7 @@ nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp) + } + + if (groupid == hlfs_gid) { +- memcpy(&userid, argp->fh_data, sizeof(userid)); ++ xgetuid(&userid, argp->fh_data); + username = (char *) &argp->fh_data[sizeof(int)]; + if (!(res.rlr_u.rlr_data_u = mailbox(userid, username))) + return (nfsreadlinkres *) NULL; diff --git a/am-utils.spec b/am-utils.spec index 0f4a585..e8f4f6f 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 8%{?dist} +Release: 20%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -40,27 +40,50 @@ Requires(preun): /sbin/install-info # Fix problems with possible future libtool rebases (#1181698) Patch1: am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch +Patch2: am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch +Patch3: am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch +Patch4: am-utils-6.2-remove-set-but-not-used-variable-s.patch +Patch5: am-utils-6.2-remove-set-but-not-used-variable-again.patch +Patch6: am-utils-6.2-remove-unused-function-show_map.patch +Patch7: am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch +Patch8: am-utils-6.2-32-bit-fixes.patch +Patch9: am-utils-6.2-make-sure-variables-are-initialized.patch +Patch10: am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch +Patch11: am-utils-6.2-Fix-nfs-args-setting-code.patch -Patch2: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch -Patch3: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch -Patch4: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch -Patch5: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch -Patch6: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch +Patch12: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch +Patch13: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch +Patch14: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch +Patch15: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch +Patch16: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch # The git changelog entry doesn't say why autoconf 2.69 is required. # Changing the check to require RHEL-6 autoconf version 2.63 does # build cleanly and appears to work ok. Perhaps the libtool change # (ie. patch1 above) resolves whatever problem that commit was meant # to deal with. -Patch7: am-utils-6.2-allow-old-autoconf-version.patch +Patch17: am-utils-6.2-allow-old-autoconf-version.patch -Patch8: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch -Patch9: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch -Patch10: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch -Patch11: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch -Patch12: am-utils-6.2-add-NFSv3-rpc-request-validation.patch -Patch13: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch -Patch14: am-utils-6.2-use-linux-libtirpc-if-present.patch +Patch18: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch +Patch19: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch20: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch21: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch +Patch22: am-utils-6.2-add-NFSv3-rpc-request-validation.patch +Patch23: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch + +Patch24: am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch +Patch25: am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch +Patch26: am-utils-6.2-Improve-debugging-for-unmounting.patch +Patch27: am-utils-6.2-add-more-debugging-in-the-unmount-path.patch +Patch28: am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch +Patch29: am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch +Patch30: am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch +Patch31: am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch + +Patch32: am-utils-6.2-use-linux-libtirpc-if-present.patch +Patch33: am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch +Patch34: am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch +Patch35: am-utils-6.2-fix-umount-to-mount-race.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -99,6 +122,27 @@ mounting and unmounting filesystems. %patch12 -p1 %patch13 -p1 %patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 +%patch35 -p1 ./bootstrap @@ -199,6 +243,29 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-20 +- print_nfs_common_args() is only needed with DEBUG. +- uid_t might be a different size than unsigned int. +- remove set but not used variable s. +- remove set but not used variable again. +- remove unused function show_map(). +- remove set but not used variable mp_error. +- 32 bit fixes. +- make sure variables are initialized. +- dont use logical double ampersand when ampersand is meant. +- Fix nfs args setting code. +- Add the sys alias for unix as well as none and null. +- Default to string mount options for NFSv4. +- Improve debugging for unmounting. +- add more debugging in the unmount path. +- There is really no ti-rpc nfsv4 so dont send one. +- Fix SEGV on amq entries that print times. +- Make hasmntval return an 0 on error 1 on success. +- Update the ctime of the directory too since it changed. +- fix compiler assignment warning due to libtirpc. +- fix logical not comparison in get_ldap_timestamp(). +- fix umount to mount race. + * Wed Mar 2 2016 Ian Kent - 5:6.2.0-8 - add get_nfs_xprt() and put_nfs_xprt() functions. - use new get_nfs_xprt() and put_nfs_xprt() functions. From 2aff790424ffb3d3fbd40d5dc5c06b27a03dc352 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 3 Oct 2016 13:33:37 +0800 Subject: [PATCH 103/157] - fix typo in libtirpc configure macro. --- am-utils-6.2-use-linux-libtirpc-if-present.patch | 2 +- am-utils.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch index 1649b54..df20d5c 100644 --- a/am-utils-6.2-use-linux-libtirpc-if-present.patch +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -88,6 +88,6 @@ index 0000000..918423c + TIRPC_CPPFLAGS="-I/usr/include/tirpc" + AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) + AC_CHECK_LIB(tirpc, clnt_tli_create, [TIRPC_LIBS="-ltirpc"], [TIRPC_CPPFLAGS=""])]) -+ AMU_CFLAGS="$ANU_CFLAGS $TIRPC_CPPFLAGS" ++ AMU_CFLAGS="$AMU_CFLAGS $TIRPC_CPPFLAGS" + LIBS="$LIBS $TIRPC_LIBS" +]) diff --git a/am-utils.spec b/am-utils.spec index e8f4f6f..fa443ad 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 20%{?dist} +Release: 21%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -243,6 +243,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-21 +- fix typo in libtirpc configure macro. + * Mon Oct 3 2016 Ian Kent - 5:6.2.0-20 - print_nfs_common_args() is only needed with DEBUG. - uid_t might be a different size than unsigned int. From cc01065e1581519b61698f807d8b6801efa5b459 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 3 Oct 2016 16:54:15 +0800 Subject: [PATCH 104/157] - fix ambiguous else due to dlog() macro usage. --- am-utils-6.2-fix-umount-to-mount-race.patch | 11 ++++++----- am-utils.spec | 5 ++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch index ca3b397..1121ece 100644 --- a/am-utils-6.2-fix-umount-to-mount-race.patch +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -16,13 +16,13 @@ fixes the problem. Signed-off-by: Richard P Signed-off-by: Ian Kent --- - amd/amfs_generic.c | 7 +++++-- + amd/amfs_generic.c | 8 ++++++-- amd/autil.c | 6 ++++++ - 2 files changed, 11 insertions(+), 2 deletions(-) + 2 files changed, 12 insertions(+), 2 deletions(-) --- am-utils-6.2.orig/amd/amfs_generic.c +++ am-utils-6.2/amd/amfs_generic.c -@@ -743,9 +743,12 @@ amfs_bgmount(struct continuation *cp) +@@ -743,9 +743,13 @@ amfs_bgmount(struct continuation *cp) if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { /* @@ -30,10 +30,11 @@ Signed-off-by: Ian Kent + * Still mounting or umounting - retry later */ - dlog("mount of \"%s\" already pending", mf->mf_info); -+ if (mf->mf_flags & MFF_MOUNTING) ++ if (mf->mf_flags & MFF_MOUNTING) { + dlog("mount of \"%s\" already pending", mf->mf_info); -+ else ++ } else { + dlog("unmount of \"%s\" already pending", mf->mf_info); ++ } goto retry; } diff --git a/am-utils.spec b/am-utils.spec index c2f75b6..1503578 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 21%{?dist} +Release: 22%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -251,6 +251,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-22 +- fix ambiguous else due to dlog() macro usage. + * Wed Sep 14 2016 Ian Kent - 5:6.2.0-21 - fix typo in libtirpc configure macro. From 2ae66b761f81ef8a11607ff332db03813a7e155b Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 3 Oct 2016 17:18:52 +0800 Subject: [PATCH 105/157] - fix ambiguous else due to dlog() macro usage. --- am-utils-6.2-fix-umount-to-mount-race.patch | 11 ++++++----- am-utils.spec | 5 ++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch index ca3b397..1121ece 100644 --- a/am-utils-6.2-fix-umount-to-mount-race.patch +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -16,13 +16,13 @@ fixes the problem. Signed-off-by: Richard P Signed-off-by: Ian Kent --- - amd/amfs_generic.c | 7 +++++-- + amd/amfs_generic.c | 8 ++++++-- amd/autil.c | 6 ++++++ - 2 files changed, 11 insertions(+), 2 deletions(-) + 2 files changed, 12 insertions(+), 2 deletions(-) --- am-utils-6.2.orig/amd/amfs_generic.c +++ am-utils-6.2/amd/amfs_generic.c -@@ -743,9 +743,12 @@ amfs_bgmount(struct continuation *cp) +@@ -743,9 +743,13 @@ amfs_bgmount(struct continuation *cp) if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { /* @@ -30,10 +30,11 @@ Signed-off-by: Ian Kent + * Still mounting or umounting - retry later */ - dlog("mount of \"%s\" already pending", mf->mf_info); -+ if (mf->mf_flags & MFF_MOUNTING) ++ if (mf->mf_flags & MFF_MOUNTING) { + dlog("mount of \"%s\" already pending", mf->mf_info); -+ else ++ } else { + dlog("unmount of \"%s\" already pending", mf->mf_info); ++ } goto retry; } diff --git a/am-utils.spec b/am-utils.spec index fa443ad..798c87f 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 21%{?dist} +Release: 22%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -243,6 +243,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-22 +- fix ambiguous else due to dlog() macro usage. + * Mon Oct 3 2016 Ian Kent - 5:6.2.0-21 - fix typo in libtirpc configure macro. From 1d2da18098482fab67b8a217d94e5e93a1ca7f4e Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Thu, 1 Dec 2016 15:56:02 +0800 Subject: [PATCH 106/157] - fix fix-umount-to-mount-race patch (bug 1399213). --- ...-6.2-fix-autoconf-check-in-bootstrap.patch | 13 +++ am-utils-6.2-fix-umount-to-mount-race.patch | 98 ++++++++++++++++--- am-utils.spec | 10 +- 3 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 am-utils-6.2-fix-autoconf-check-in-bootstrap.patch diff --git a/am-utils-6.2-fix-autoconf-check-in-bootstrap.patch b/am-utils-6.2-fix-autoconf-check-in-bootstrap.patch new file mode 100644 index 0000000..325621a --- /dev/null +++ b/am-utils-6.2-fix-autoconf-check-in-bootstrap.patch @@ -0,0 +1,13 @@ +diff -up am-utils-6.2/bootstrap.autoconf am-utils-6.2/bootstrap +--- am-utils-6.2/bootstrap.autoconf 2016-11-30 14:57:05.419388173 +0800 ++++ am-utils-6.2/bootstrap 2016-11-30 14:57:40.177131005 +0800 +@@ -9,7 +9,8 @@ validateversion() { + local v="$(autoreconf --version 2>&1 | head -1)" + case "$v" in + *2.63) ;; +- *) echo "am-utils requires autoconf 2.69, you have:" ++ *2.69) ;; ++ *) echo "am-utils requires autoconf 2.69 or 2.63, you have:" + echo " $v" + exit 1;; + esac diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch index 1121ece..fb8d77d 100644 --- a/am-utils-6.2-fix-umount-to-mount-race.patch +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -1,6 +1,6 @@ am-utils-6.2 - fix umount to mount race -From: Richard P +From: Ian Kent If a mount request arrives while its mount fs is being umounted the the reference count of the mount fs never reaches 1 so the location @@ -10,18 +10,39 @@ This leads to amd thinking the mount fs is still mounted and the mount request succeeds without its corresponding target being mounted. -This patch from Richard P (with an added fix to a log message) -fixes the problem. - -Signed-off-by: Richard P Signed-off-by: Ian Kent --- - amd/amfs_generic.c | 8 ++++++-- - amd/autil.c | 6 ++++++ - 2 files changed, 12 insertions(+), 2 deletions(-) + amd/amd.h | 1 + + amd/amfs_generic.c | 10 +++++++--- + amd/autil.c | 9 +++++++++ + amd/map.c | 13 ++++++++++++- + 4 files changed, 29 insertions(+), 4 deletions(-) ---- am-utils-6.2.orig/amd/amfs_generic.c -+++ am-utils-6.2/amd/amfs_generic.c +diff --git a/amd/amd.h b/amd/amd.h +index f66f5b7..504bcf7 100644 +--- a/amd/amd.h ++++ b/amd/amd.h +@@ -112,6 +112,7 @@ + #define AMF_AUTOFS 0x0004 /* This node is part of an autofs filesystem */ + #define AMF_REMOUNT 0x0008 /* This node needs to be remounted */ + #define AMF_SOFTLOOKUP 0x0010 /* This node returns EIO if server is down */ ++#define AMF_SOFTUNMOUNT 0x0020 /* unmount_node() returned EAGAIN, mount still referenced */ + + /* + * macros for struct mntfs (list of mounted filesystems) +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index 86d0ab7..7ab2829 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -178,7 +178,7 @@ amfs_lookup_node(am_node *mp, char *fname, int *error_return) + error = mf->mf_error; + continue; + } +- if (!(mf->mf_flags & MFF_MOUNTED) || (mf->mf_flags & MFF_UNMOUNTING)) { ++ if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { + in_progrss: + /* + * If the fs is not mounted or it is unmounting then there @@ -743,9 +743,13 @@ amfs_bgmount(struct continuation *cp) if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { @@ -38,18 +59,65 @@ Signed-off-by: Ian Kent goto retry; } ---- am-utils-6.2.orig/amd/autil.c -+++ am-utils-6.2/amd/autil.c -@@ -703,6 +703,12 @@ am_unmounted(am_node *mp) +diff --git a/amd/autil.c b/amd/autil.c +index f44a0e2..1962c71 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -703,6 +703,15 @@ am_unmounted(am_node *mp) } /* + * Clear the mounted flag in case there is a pending mount with -+ * the same target fs. ++ * the same target fs and this is the last reference to it. + */ -+ mf->mf_flags &= ~MFF_MOUNTED; ++ if (mp->am_flags & AMF_SOFTUNMOUNT) ++ mp->am_flags &= ~AMF_SOFTUNMOUNT; ++ else ++ mf->mf_flags &= ~MFF_MOUNTED; + + /* * If this is a pseudo-directory then adjust the link count * in the parent */ +diff --git a/amd/map.c b/amd/map.c +index a6df44b..cf5263e 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -819,11 +819,17 @@ unmount_node(opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + if (mf->mf_refc == 1) + error = mf->mf_ops->umount_fs(mp, mf); ++ ++ /* Mount was not actually unmounted, soft umount. ++ * Tell the caller about it. ++ */ ++ if (!error && mf->mf_refc > 1) ++ error = EAGAIN; + } + + /* do this again, it might have changed */ + mf = mp->am_al->al_mnt; +- if (error) { ++ if (error && error != EAGAIN) { + errno = error; /* XXX */ + dlog("%s: unmount: %m", mf->mf_mount); + } +@@ -870,6 +876,10 @@ free_map_if_success(int rc, int term, opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else if (rc) { ++ if (rc == EAGAIN) { ++ mp->am_flags |= AMF_SOFTUNMOUNT; ++ goto done; ++ } + notify_child(mp, AMQ_UMNT_FAILED, rc, 0); + if (mf->mf_ops == &amfs_program_ops || rc == EBUSY) + plog(XLOG_STATS, "\"%s\" on %s still active", mp->am_path, mf->mf_mount); +@@ -885,6 +895,7 @@ free_map_if_success(int rc, int term, opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else { ++done: + /* + * am_unmounted() will call notify_child() appropriately. + */ diff --git a/am-utils.spec b/am-utils.spec index 798c87f..a6095b5 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 22%{?dist} +Release: 23%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -85,6 +85,9 @@ Patch33: am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch Patch34: am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch Patch35: am-utils-6.2-fix-umount-to-mount-race.patch +# So I can work on this with other than RHEL-6. +Patch36: am-utils-6.2-fix-autoconf-check-in-bootstrap.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -143,6 +146,7 @@ mounting and unmounting filesystems. %patch33 -p1 %patch34 -p1 %patch35 -p1 +%patch36 -p1 ./bootstrap @@ -243,6 +247,10 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Dec 1 2016 Ian Kent - 5:6.2.0-23 +- change bootstrap script to not object to different autoconf version. +- fix fix-umount-to-mount-race patch (bug 1399213). + * Mon Oct 3 2016 Ian Kent - 5:6.2.0-22 - fix ambiguous else due to dlog() macro usage. From 38fe2a08cf78f906a85946b0a0ec845617386460 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 19 Dec 2016 11:14:54 +0800 Subject: [PATCH 107/157] - fix fix-umount-to-mount-race patch (bug 1399213). --- am-utils-6.2-fix-umount-to-mount-race.patch | 98 +++++++++++++++++---- am-utils.spec | 5 +- 2 files changed, 87 insertions(+), 16 deletions(-) diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch index 1121ece..fb8d77d 100644 --- a/am-utils-6.2-fix-umount-to-mount-race.patch +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -1,6 +1,6 @@ am-utils-6.2 - fix umount to mount race -From: Richard P +From: Ian Kent If a mount request arrives while its mount fs is being umounted the the reference count of the mount fs never reaches 1 so the location @@ -10,18 +10,39 @@ This leads to amd thinking the mount fs is still mounted and the mount request succeeds without its corresponding target being mounted. -This patch from Richard P (with an added fix to a log message) -fixes the problem. - -Signed-off-by: Richard P Signed-off-by: Ian Kent --- - amd/amfs_generic.c | 8 ++++++-- - amd/autil.c | 6 ++++++ - 2 files changed, 12 insertions(+), 2 deletions(-) + amd/amd.h | 1 + + amd/amfs_generic.c | 10 +++++++--- + amd/autil.c | 9 +++++++++ + amd/map.c | 13 ++++++++++++- + 4 files changed, 29 insertions(+), 4 deletions(-) ---- am-utils-6.2.orig/amd/amfs_generic.c -+++ am-utils-6.2/amd/amfs_generic.c +diff --git a/amd/amd.h b/amd/amd.h +index f66f5b7..504bcf7 100644 +--- a/amd/amd.h ++++ b/amd/amd.h +@@ -112,6 +112,7 @@ + #define AMF_AUTOFS 0x0004 /* This node is part of an autofs filesystem */ + #define AMF_REMOUNT 0x0008 /* This node needs to be remounted */ + #define AMF_SOFTLOOKUP 0x0010 /* This node returns EIO if server is down */ ++#define AMF_SOFTUNMOUNT 0x0020 /* unmount_node() returned EAGAIN, mount still referenced */ + + /* + * macros for struct mntfs (list of mounted filesystems) +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index 86d0ab7..7ab2829 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -178,7 +178,7 @@ amfs_lookup_node(am_node *mp, char *fname, int *error_return) + error = mf->mf_error; + continue; + } +- if (!(mf->mf_flags & MFF_MOUNTED) || (mf->mf_flags & MFF_UNMOUNTING)) { ++ if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { + in_progrss: + /* + * If the fs is not mounted or it is unmounting then there @@ -743,9 +743,13 @@ amfs_bgmount(struct continuation *cp) if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { @@ -38,18 +59,65 @@ Signed-off-by: Ian Kent goto retry; } ---- am-utils-6.2.orig/amd/autil.c -+++ am-utils-6.2/amd/autil.c -@@ -703,6 +703,12 @@ am_unmounted(am_node *mp) +diff --git a/amd/autil.c b/amd/autil.c +index f44a0e2..1962c71 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -703,6 +703,15 @@ am_unmounted(am_node *mp) } /* + * Clear the mounted flag in case there is a pending mount with -+ * the same target fs. ++ * the same target fs and this is the last reference to it. + */ -+ mf->mf_flags &= ~MFF_MOUNTED; ++ if (mp->am_flags & AMF_SOFTUNMOUNT) ++ mp->am_flags &= ~AMF_SOFTUNMOUNT; ++ else ++ mf->mf_flags &= ~MFF_MOUNTED; + + /* * If this is a pseudo-directory then adjust the link count * in the parent */ +diff --git a/amd/map.c b/amd/map.c +index a6df44b..cf5263e 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -819,11 +819,17 @@ unmount_node(opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + if (mf->mf_refc == 1) + error = mf->mf_ops->umount_fs(mp, mf); ++ ++ /* Mount was not actually unmounted, soft umount. ++ * Tell the caller about it. ++ */ ++ if (!error && mf->mf_refc > 1) ++ error = EAGAIN; + } + + /* do this again, it might have changed */ + mf = mp->am_al->al_mnt; +- if (error) { ++ if (error && error != EAGAIN) { + errno = error; /* XXX */ + dlog("%s: unmount: %m", mf->mf_mount); + } +@@ -870,6 +876,10 @@ free_map_if_success(int rc, int term, opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else if (rc) { ++ if (rc == EAGAIN) { ++ mp->am_flags |= AMF_SOFTUNMOUNT; ++ goto done; ++ } + notify_child(mp, AMQ_UMNT_FAILED, rc, 0); + if (mf->mf_ops == &amfs_program_ops || rc == EBUSY) + plog(XLOG_STATS, "\"%s\" on %s still active", mp->am_path, mf->mf_mount); +@@ -885,6 +895,7 @@ free_map_if_success(int rc, int term, opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else { ++done: + /* + * am_unmounted() will call notify_child() appropriately. + */ diff --git a/am-utils.spec b/am-utils.spec index 1503578..134dfef 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 22%{?dist} +Release: 23%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -251,6 +251,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Dec 1 2016 Ian Kent - 5:6.2.0-23 +- fix fix-umount-to-mount-race patch (bug 1399213). + * Mon Oct 3 2016 Ian Kent - 5:6.2.0-22 - fix ambiguous else due to dlog() macro usage. From 638150685a9610ce813c874e05d8d410c656dfe8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 10 Feb 2017 05:54:59 +0000 Subject: [PATCH 108/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 134dfef..c999ba4 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 23%{?dist} +Release: 24%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -251,6 +251,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Feb 10 2017 Fedora Release Engineering - 5:6.2.0-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Thu Dec 1 2016 Ian Kent - 5:6.2.0-23 - fix fix-umount-to-mount-race patch (bug 1399213). From 881e6e24f311ef3c230fd64e2215572160682bd1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 26 Jul 2017 02:48:04 +0000 Subject: [PATCH 109/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index c999ba4..c557f22 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 24%{?dist} +Release: 25%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -251,6 +251,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 26 2017 Fedora Release Engineering - 5:6.2.0-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Fri Feb 10 2017 Fedora Release Engineering - 5:6.2.0-24 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild From 140f0698e96c1ff27b575fe21cb05eefd65c44fe Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 2 Aug 2017 17:32:26 +0000 Subject: [PATCH 110/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index c557f22..ff3ce7a 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 25%{?dist} +Release: 26%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -251,6 +251,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Aug 02 2017 Fedora Release Engineering - 5:6.2.0-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Wed Jul 26 2017 Fedora Release Engineering - 5:6.2.0-25 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 39097857d18e6f08836d5fa500fe6dd4e225542e Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 29 Aug 2017 10:19:20 +0800 Subject: [PATCH 111/157] - fix nfsv3 fh length in NFS_FH_DREF(). --- ...2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch | 26 +++++++++++++++++++ am-utils.spec | 8 +++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch diff --git a/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch b/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch new file mode 100644 index 0000000..0c2a873 --- /dev/null +++ b/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch @@ -0,0 +1,26 @@ +am-utils-6.2 - fix nfsv3 fh length in NFS_FH_DREF() + +From: Ian Kent + +The NFS_FH_DREF() macro for linux uses sizeof(struct nfs_fh) for the +length of the file handle copy regardless of the version of NFS used. + +But NFSv3 file handles are 64 bytes and not copying the whole file +handle can cause automounts to fail. + +Changing this to use the size of the passed nfs file handle fixes +the problem. + +Signed-off-by: Ian Kent +--- + conf/fh_dref/fh_dref_linux.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conf/fh_dref/fh_dref_linux.h b/conf/fh_dref/fh_dref_linux.h +index 7ffa5b50..f8fb1a89 100644 +--- a/conf/fh_dref/fh_dref_linux.h ++++ b/conf/fh_dref/fh_dref_linux.h +@@ -1,2 +1,2 @@ + /* $srcdir/conf/fh_dref/fh_dref_linux.h */ +-#define NFS_FH_DREF(dst, src) memcpy((char *) &(dst.data), (char *) src, sizeof(struct nfs_fh)) ++#define NFS_FH_DREF(dst, src) memcpy((char *) &(dst.data), (char *) src, sizeof(*src)) diff --git a/am-utils.spec b/am-utils.spec index ff3ce7a..d07516d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 26%{?dist} +Release: 27%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -83,6 +83,8 @@ Patch32: am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch Patch33: am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch Patch34: am-utils-6.2-fix-umount-to-mount-race.patch +Patch35: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -140,6 +142,7 @@ mounting and unmounting filesystems. %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 -p1 ./bootstrap @@ -251,6 +254,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Aug 24 2017 Ian Kent - 5:6.2.0-27 +- fix nfsv3 fh length in NFS_FH_DREF(). + * Wed Aug 02 2017 Fedora Release Engineering - 5:6.2.0-26 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild From e1bffbb43127d1294a7f076072a4aa381b3bf2e6 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 29 Aug 2017 11:36:47 +0800 Subject: [PATCH 112/157] - fix nfsv3 fh length in NFS_FH_DREF(). --- ...2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch | 26 +++++++++++++++++++ am-utils.spec | 8 +++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch diff --git a/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch b/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch new file mode 100644 index 0000000..0c2a873 --- /dev/null +++ b/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch @@ -0,0 +1,26 @@ +am-utils-6.2 - fix nfsv3 fh length in NFS_FH_DREF() + +From: Ian Kent + +The NFS_FH_DREF() macro for linux uses sizeof(struct nfs_fh) for the +length of the file handle copy regardless of the version of NFS used. + +But NFSv3 file handles are 64 bytes and not copying the whole file +handle can cause automounts to fail. + +Changing this to use the size of the passed nfs file handle fixes +the problem. + +Signed-off-by: Ian Kent +--- + conf/fh_dref/fh_dref_linux.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conf/fh_dref/fh_dref_linux.h b/conf/fh_dref/fh_dref_linux.h +index 7ffa5b50..f8fb1a89 100644 +--- a/conf/fh_dref/fh_dref_linux.h ++++ b/conf/fh_dref/fh_dref_linux.h +@@ -1,2 +1,2 @@ + /* $srcdir/conf/fh_dref/fh_dref_linux.h */ +-#define NFS_FH_DREF(dst, src) memcpy((char *) &(dst.data), (char *) src, sizeof(struct nfs_fh)) ++#define NFS_FH_DREF(dst, src) memcpy((char *) &(dst.data), (char *) src, sizeof(*src)) diff --git a/am-utils.spec b/am-utils.spec index a6095b5..c2baa69 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 23%{?dist} +Release: 27%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -88,6 +88,8 @@ Patch35: am-utils-6.2-fix-umount-to-mount-race.patch # So I can work on this with other than RHEL-6. Patch36: am-utils-6.2-fix-autoconf-check-in-bootstrap.patch +Patch37: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -147,6 +149,7 @@ mounting and unmounting filesystems. %patch34 -p1 %patch35 -p1 %patch36 -p1 +%patch37 -p1 ./bootstrap @@ -247,6 +250,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Aug 29 2017 Ian Kent - 5:6.2.0-27 +- fix nfsv3 fh length in NFS_FH_DREF(). + * Thu Dec 1 2016 Ian Kent - 5:6.2.0-23 - change bootstrap script to not object to different autoconf version. - fix fix-umount-to-mount-race patch (bug 1399213). From f6425c6b857b76bcf42fe278a42c9061d14a93d0 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 4 Feb 2018 15:59:50 +0800 Subject: [PATCH 113/157] - Update "Requires(pre)" to use /usr/bin/grep instead of /bin/grep. --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index d07516d..8a34b81 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 27%{?dist} +Release: 28%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -35,7 +35,7 @@ Requires: gawk Requires: findutils Requires: libtirpc -Requires(pre): /bin/grep +Requires(pre): /usr/bin/grep Requires(post): /sbin/install-info Requires(post): systemd-sysv Requires(post): systemd-units @@ -254,6 +254,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sun Feb 04 2018 Ian Kent - 5:6.2.0-28 +- Update "Requires(pre)" to use /usr/bin/grep instead of /bin/grep. + * Thu Aug 24 2017 Ian Kent - 5:6.2.0-27 - fix nfsv3 fh length in NFS_FH_DREF(). From 44633db9d9dff16d7f6b36888851da4d10f36826 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 4 Feb 2018 16:53:29 +0800 Subject: [PATCH 114/157] - Remove "BuildRequires: tcp_wrappers-devel" as tcp_wrappers is depricated. --- am-utils.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 8a34b81..44a5822 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 28%{?dist} +Release: 29%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -22,7 +22,6 @@ BuildRequires: automake BuildRequires: libtool BuildRequires: bison BuildRequires: flex -BuildRequires: tcp_wrappers-devel BuildRequires: systemd-units BuildRequires: texinfo BuildRequires: gcc @@ -254,6 +253,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sun Feb 04 2018 Ian Kent - 5:6.2.0-29 +- Remove "BuildRequires: tcp_wrappers-devel" as tcp_wrappers is depricated. + * Sun Feb 04 2018 Ian Kent - 5:6.2.0-28 - Update "Requires(pre)" to use /usr/bin/grep instead of /bin/grep. From 51372607b241ff163e5351ddb6a2ea9cfd1d9c8b Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 4 Feb 2018 17:06:50 +0800 Subject: [PATCH 115/157] - Add "BuildRequires: kernel-headers" for linux/version.h requirement. --- am-utils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 44a5822..e71c412 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 29%{?dist} +Release: 30%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -27,6 +27,7 @@ BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel +BuildRequires: kernel-headers Requires: rpcbind Requires: grep @@ -253,6 +254,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sun Feb 04 2018 Ian Kent - 5:6.2.0-30 +- Add "BuildRequires: kernel-headers" for linux/version.h requirement. + * Sun Feb 04 2018 Ian Kent - 5:6.2.0-29 - Remove "BuildRequires: tcp_wrappers-devel" as tcp_wrappers is depricated. From d7d39135db0beb7e9a9f16064fb97d44f035e910 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 6 Feb 2018 14:28:44 +0800 Subject: [PATCH 116/157] - try to workaround the removal of RPC code from glibc. --- ...unt-for-glibc-removed-rpcsvc_mount_h.patch | 160 ++++++ ...-for-glibc-removed-rpcsvc_nfs_prot_h.patch | 463 ++++++++++++++++++ ...ls-6.2-use-linux-libtirpc-if-present.patch | 31 +- am-utils.spec | 12 +- 4 files changed, 650 insertions(+), 16 deletions(-) create mode 100644 am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch create mode 100644 am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch diff --git a/am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch b/am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch new file mode 100644 index 0000000..04ba5a0 --- /dev/null +++ b/am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch @@ -0,0 +1,160 @@ +am-utils-6.2 - account for glibc removed rpcsvc/mount.h + +From: Ian Kent + +The glibc RPC code may have been removed and if so rpcsvc/mount.h +is no longer available in any package. + +Account for this by including the old glibc rpcsvc/mount.h directly +in nfs_prot_linux.h. + +Signed-off-by: Ian Kent +--- + conf/nfs_prot/nfs_prot_linux.h | 134 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 134 insertions(+) + +diff --git a/conf/nfs_prot/nfs_prot_linux.h b/conf/nfs_prot/nfs_prot_linux.h +index 9934b440..63493712 100644 +--- a/conf/nfs_prot/nfs_prot_linux.h ++++ b/conf/nfs_prot/nfs_prot_linux.h +@@ -481,6 +481,140 @@ extern bool_t xdr_statfsres (); + #endif + #endif /* HAVE_RPCSVC_NFS_PROT_H */ + ++#ifndef HAVE_RPCSVC_MOUNT_H ++/* ++ * On Linux the RPC code may have been removed from glibc. ++ * If HAVE_RPCSVC_MOUNT_H is undefined that is the case ++ * and there is no rpcsvc/imount.h anywhere so provide it ++ * here. ++ */ ++#include ++ ++#define MNTPATHLEN 1024 ++#define MNTNAMLEN 255 ++#define FHSIZE 32 ++ ++typedef char fhandle[FHSIZE]; ++ ++struct fhstatus { ++ u_int fhs_status; ++ union { ++ fhandle fhs_fhandle; ++ } fhstatus_u; ++}; ++typedef struct fhstatus fhstatus; ++ ++typedef char *dirpath; ++ ++typedef char *name; ++ ++typedef struct mountbody *mountlist; ++ ++struct mountbody { ++ name ml_hostname; ++ dirpath ml_directory; ++ mountlist ml_next; ++}; ++typedef struct mountbody mountbody; ++ ++typedef struct groupnode *groups; ++ ++struct groupnode { ++ name gr_name; ++ groups gr_next; ++}; ++typedef struct groupnode groupnode; ++ ++typedef struct exportnode *exports; ++ ++struct exportnode { ++ dirpath ex_dir; ++ groups ex_groups; ++ exports ex_next; ++}; ++typedef struct exportnode exportnode; ++ ++#define MOUNTPROG 100005 ++#define MOUNTVERS 1 ++ ++#if defined(__STDC__) || defined(__cplusplus) ++#define MOUNTPROC_NULL 0 ++extern void * mountproc_null_1(void *, CLIENT *); ++extern void * mountproc_null_1_svc(void *, struct svc_req *); ++#define MOUNTPROC_MNT 1 ++extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *); ++extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *); ++#define MOUNTPROC_DUMP 2 ++extern mountlist * mountproc_dump_1(void *, CLIENT *); ++extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *); ++#define MOUNTPROC_UMNT 3 ++extern void * mountproc_umnt_1(dirpath *, CLIENT *); ++extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *); ++#define MOUNTPROC_UMNTALL 4 ++extern void * mountproc_umntall_1(void *, CLIENT *); ++extern void * mountproc_umntall_1_svc(void *, struct svc_req *); ++#define MOUNTPROC_EXPORT 5 ++extern exports * mountproc_export_1(void *, CLIENT *); ++extern exports * mountproc_export_1_svc(void *, struct svc_req *); ++#define MOUNTPROC_EXPORTALL 6 ++extern exports * mountproc_exportall_1(void *, CLIENT *); ++extern exports * mountproc_exportall_1_svc(void *, struct svc_req *); ++extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); ++ ++#else /* K&R C */ ++#define MOUNTPROC_NULL 0 ++extern void * mountproc_null_1(); ++extern void * mountproc_null_1_svc(); ++#define MOUNTPROC_MNT 1 ++extern fhstatus * mountproc_mnt_1(); ++extern fhstatus * mountproc_mnt_1_svc(); ++#define MOUNTPROC_DUMP 2 ++extern mountlist * mountproc_dump_1(); ++extern mountlist * mountproc_dump_1_svc(); ++#define MOUNTPROC_UMNT 3 ++extern void * mountproc_umnt_1(); ++extern void * mountproc_umnt_1_svc(); ++#define MOUNTPROC_UMNTALL 4 ++extern void * mountproc_umntall_1(); ++extern void * mountproc_umntall_1_svc(); ++#define MOUNTPROC_EXPORT 5 ++extern exports * mountproc_export_1(); ++extern exports * mountproc_export_1_svc(); ++#define MOUNTPROC_EXPORTALL 6 ++extern exports * mountproc_exportall_1(); ++extern exports * mountproc_exportall_1_svc(); ++extern int mountprog_1_freeresult (); ++#endif /* K&R C */ ++ ++/* the xdr functions */ ++ ++#if defined(__STDC__) || defined(__cplusplus) ++extern bool_t xdr_fhandle (XDR *, fhandle); ++extern bool_t xdr_fhstatus (XDR *, fhstatus*); ++extern bool_t xdr_dirpath (XDR *, dirpath*); ++extern bool_t xdr_name (XDR *, name*); ++extern bool_t xdr_mountlist (XDR *, mountlist*); ++extern bool_t xdr_mountbody (XDR *, mountbody*); ++extern bool_t xdr_groups (XDR *, groups*); ++extern bool_t xdr_groupnode (XDR *, groupnode*); ++extern bool_t xdr_exports (XDR *, exports*); ++extern bool_t xdr_exportnode (XDR *, exportnode*); ++ ++#else /* K&R C */ ++extern bool_t xdr_fhandle (); ++extern bool_t xdr_fhstatus (); ++extern bool_t xdr_dirpath (); ++extern bool_t xdr_name (); ++extern bool_t xdr_mountlist (); ++extern bool_t xdr_mountbody (); ++extern bool_t xdr_groups (); ++extern bool_t xdr_groupnode (); ++extern bool_t xdr_exports (); ++extern bool_t xdr_exportnode (); ++ ++#endif /* K&R C */ ++#endif ++ + /* + * Hard-code support for some file systems so the built amd + * binary can always run them. Also, this helps detection of iso9660 diff --git a/am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch b/am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch new file mode 100644 index 0000000..c925902 --- /dev/null +++ b/am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch @@ -0,0 +1,463 @@ +am-utils-6.2 - account for glibc removed rpcsvc/nfs_prot.h + +From: Ian Kent + +The glibc RPC code may have been removed and if so rpcsvc/nfs_prot.h +is no longer available in any package. + +Account for this by including the old glibc rpcsvc/nfs_prot.h directly +in nfs_prot_linux.h. + +Signed-off-by: Ian Kent +--- + conf/nfs_prot/nfs_prot_linux.h | 437 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 437 insertions(+) + +diff --git a/conf/nfs_prot/nfs_prot_linux.h b/conf/nfs_prot/nfs_prot_linux.h +index 7ccf18f0..9934b440 100644 +--- a/conf/nfs_prot/nfs_prot_linux.h ++++ b/conf/nfs_prot/nfs_prot_linux.h +@@ -42,6 +42,443 @@ + + #ifdef HAVE_RPCSVC_NFS_PROT_H + # include ++#else ++/* ++ * On Linux the RPC code may have been removed from glibc. ++ * If HAVE_RPCSVC_NFS_PROT_H is undefined that is the case ++ * and there is no rpcsvc/nfs_prot.h anywhere so provide it ++ * here. ++ */ ++#include ++ ++#define NFS_PORT 2049 ++#define NFS_MAXDATA 8192 ++#define NFS_MAXPATHLEN 1024 ++#define NFS_MAXNAMLEN 255 ++#define NFS_FHSIZE 32 ++#define NFS_COOKIESIZE 4 ++#define NFS_FIFO_DEV -1 ++#define NFSMODE_FMT 0170000 ++#define NFSMODE_DIR 0040000 ++#define NFSMODE_CHR 0020000 ++#define NFSMODE_BLK 0060000 ++#define NFSMODE_REG 0100000 ++#define NFSMODE_LNK 0120000 ++#define NFSMODE_SOCK 0140000 ++#define NFSMODE_FIFO 0010000 ++ ++enum nfsstat { ++ NFS_OK = 0, ++ NFSERR_PERM = 1, ++ NFSERR_NOENT = 2, ++ NFSERR_IO = 5, ++ NFSERR_NXIO = 6, ++ NFSERR_ACCES = 13, ++ NFSERR_EXIST = 17, ++ NFSERR_NODEV = 19, ++ NFSERR_NOTDIR = 20, ++ NFSERR_ISDIR = 21, ++ NFSERR_FBIG = 27, ++ NFSERR_NOSPC = 28, ++ NFSERR_ROFS = 30, ++ NFSERR_NAMETOOLONG = 63, ++ NFSERR_NOTEMPTY = 66, ++ NFSERR_DQUOT = 69, ++ NFSERR_STALE = 70, ++ NFSERR_WFLUSH = 99, ++}; ++typedef enum nfsstat nfsstat; ++ ++enum ftype { ++ NFNON = 0, ++ NFREG = 1, ++ NFDIR = 2, ++ NFBLK = 3, ++ NFCHR = 4, ++ NFLNK = 5, ++ NFSOCK = 6, ++ NFBAD = 7, ++ NFFIFO = 8, ++}; ++typedef enum ftype ftype; ++ ++struct nfs_fh { ++ char data[NFS_FHSIZE]; ++}; ++typedef struct nfs_fh nfs_fh; ++ ++struct nfstime { ++ u_int seconds; ++ u_int useconds; ++}; ++typedef struct nfstime nfstime; ++ ++struct fattr { ++ ftype type; ++ u_int mode; ++ u_int nlink; ++ u_int uid; ++ u_int gid; ++ u_int size; ++ u_int blocksize; ++ u_int rdev; ++ u_int blocks; ++ u_int fsid; ++ u_int fileid; ++ nfstime atime; ++ nfstime mtime; ++ nfstime ctime; ++}; ++typedef struct fattr fattr; ++ ++struct sattr { ++ u_int mode; ++ u_int uid; ++ u_int gid; ++ u_int size; ++ nfstime atime; ++ nfstime mtime; ++}; ++typedef struct sattr sattr; ++ ++typedef char *filename; ++ ++typedef char *nfspath; ++ ++struct attrstat { ++ nfsstat status; ++ union { ++ fattr attributes; ++ } attrstat_u; ++}; ++typedef struct attrstat attrstat; ++ ++struct sattrargs { ++ nfs_fh file; ++ sattr attributes; ++}; ++typedef struct sattrargs sattrargs; ++ ++struct diropargs { ++ nfs_fh dir; ++ filename name; ++}; ++typedef struct diropargs diropargs; ++ ++struct diropokres { ++ nfs_fh file; ++ fattr attributes; ++}; ++typedef struct diropokres diropokres; ++ ++struct diropres { ++ nfsstat status; ++ union { ++ diropokres diropres; ++ } diropres_u; ++}; ++typedef struct diropres diropres; ++ ++struct readlinkres { ++ nfsstat status; ++ union { ++ nfspath data; ++ } readlinkres_u; ++}; ++typedef struct readlinkres readlinkres; ++ ++struct readargs { ++ nfs_fh file; ++ u_int offset; ++ u_int count; ++ u_int totalcount; ++}; ++typedef struct readargs readargs; ++ ++struct readokres { ++ fattr attributes; ++ struct { ++ u_int data_len; ++ char *data_val; ++ } data; ++}; ++typedef struct readokres readokres; ++ ++struct readres { ++ nfsstat status; ++ union { ++ readokres reply; ++ } readres_u; ++}; ++typedef struct readres readres; ++ ++struct writeargs { ++ nfs_fh file; ++ u_int beginoffset; ++ u_int offset; ++ u_int totalcount; ++ struct { ++ u_int data_len; ++ char *data_val; ++ } data; ++}; ++typedef struct writeargs writeargs; ++ ++struct createargs { ++ diropargs where; ++ sattr attributes; ++}; ++typedef struct createargs createargs; ++ ++struct renameargs { ++ diropargs from; ++ diropargs to; ++}; ++typedef struct renameargs renameargs; ++ ++struct linkargs { ++ nfs_fh from; ++ diropargs to; ++}; ++typedef struct linkargs linkargs; ++ ++struct symlinkargs { ++ diropargs from; ++ nfspath to; ++ sattr attributes; ++}; ++typedef struct symlinkargs symlinkargs; ++ ++typedef char nfscookie[NFS_COOKIESIZE]; ++ ++struct readdirargs { ++ nfs_fh dir; ++ nfscookie cookie; ++ u_int count; ++}; ++typedef struct readdirargs readdirargs; ++ ++struct entry { ++ u_int fileid; ++ filename name; ++ nfscookie cookie; ++ struct entry *nextentry; ++}; ++typedef struct entry entry; ++ ++struct dirlist { ++ entry *entries; ++ bool_t eof; ++}; ++typedef struct dirlist dirlist; ++ ++struct readdirres { ++ nfsstat status; ++ union { ++ dirlist reply; ++ } readdirres_u; ++}; ++typedef struct readdirres readdirres; ++ ++struct statfsokres { ++ u_int tsize; ++ u_int bsize; ++ u_int blocks; ++ u_int bfree; ++ u_int bavail; ++}; ++typedef struct statfsokres statfsokres; ++ ++struct statfsres { ++ nfsstat status; ++ union { ++ statfsokres reply; ++ } statfsres_u; ++}; ++typedef struct statfsres statfsres; ++ ++#define NFS_PROGRAM 100003 ++#define NFS_VERSION 2 ++ ++#if defined(__STDC__) || defined(__cplusplus) ++#define NFSPROC_NULL 0 ++extern void * nfsproc_null_2(void *, CLIENT *); ++extern void * nfsproc_null_2_svc(void *, struct svc_req *); ++#define NFSPROC_GETATTR 1 ++extern attrstat * nfsproc_getattr_2(nfs_fh *, CLIENT *); ++extern attrstat * nfsproc_getattr_2_svc(nfs_fh *, struct svc_req *); ++#define NFSPROC_SETATTR 2 ++extern attrstat * nfsproc_setattr_2(sattrargs *, CLIENT *); ++extern attrstat * nfsproc_setattr_2_svc(sattrargs *, struct svc_req *); ++#define NFSPROC_ROOT 3 ++extern void * nfsproc_root_2(void *, CLIENT *); ++extern void * nfsproc_root_2_svc(void *, struct svc_req *); ++#define NFSPROC_LOOKUP 4 ++extern diropres * nfsproc_lookup_2(diropargs *, CLIENT *); ++extern diropres * nfsproc_lookup_2_svc(diropargs *, struct svc_req *); ++#define NFSPROC_READLINK 5 ++extern readlinkres * nfsproc_readlink_2(nfs_fh *, CLIENT *); ++extern readlinkres * nfsproc_readlink_2_svc(nfs_fh *, struct svc_req *); ++#define NFSPROC_READ 6 ++extern readres * nfsproc_read_2(readargs *, CLIENT *); ++extern readres * nfsproc_read_2_svc(readargs *, struct svc_req *); ++#define NFSPROC_WRITECACHE 7 ++extern void * nfsproc_writecache_2(void *, CLIENT *); ++extern void * nfsproc_writecache_2_svc(void *, struct svc_req *); ++#define NFSPROC_WRITE 8 ++extern attrstat * nfsproc_write_2(writeargs *, CLIENT *); ++extern attrstat * nfsproc_write_2_svc(writeargs *, struct svc_req *); ++#define NFSPROC_CREATE 9 ++extern diropres * nfsproc_create_2(createargs *, CLIENT *); ++extern diropres * nfsproc_create_2_svc(createargs *, struct svc_req *); ++#define NFSPROC_REMOVE 10 ++extern nfsstat * nfsproc_remove_2(diropargs *, CLIENT *); ++extern nfsstat * nfsproc_remove_2_svc(diropargs *, struct svc_req *); ++#define NFSPROC_RENAME 11 ++extern nfsstat * nfsproc_rename_2(renameargs *, CLIENT *); ++extern nfsstat * nfsproc_rename_2_svc(renameargs *, struct svc_req *); ++#define NFSPROC_LINK 12 ++extern nfsstat * nfsproc_link_2(linkargs *, CLIENT *); ++extern nfsstat * nfsproc_link_2_svc(linkargs *, struct svc_req *); ++#define NFSPROC_SYMLINK 13 ++extern nfsstat * nfsproc_symlink_2(symlinkargs *, CLIENT *); ++extern nfsstat * nfsproc_symlink_2_svc(symlinkargs *, struct svc_req *); ++#define NFSPROC_MKDIR 14 ++extern diropres * nfsproc_mkdir_2(createargs *, CLIENT *); ++extern diropres * nfsproc_mkdir_2_svc(createargs *, struct svc_req *); ++#define NFSPROC_RMDIR 15 ++extern nfsstat * nfsproc_rmdir_2(diropargs *, CLIENT *); ++extern nfsstat * nfsproc_rmdir_2_svc(diropargs *, struct svc_req *); ++#define NFSPROC_READDIR 16 ++extern readdirres * nfsproc_readdir_2(readdirargs *, CLIENT *); ++extern readdirres * nfsproc_readdir_2_svc(readdirargs *, struct svc_req *); ++#define NFSPROC_STATFS 17 ++extern statfsres * nfsproc_statfs_2(nfs_fh *, CLIENT *); ++extern statfsres * nfsproc_statfs_2_svc(nfs_fh *, struct svc_req *); ++extern int nfs_program_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); ++ ++#else /* K&R C */ ++#define NFSPROC_NULL 0 ++extern void * nfsproc_null_2(); ++extern void * nfsproc_null_2_svc(); ++#define NFSPROC_GETATTR 1 ++extern attrstat * nfsproc_getattr_2(); ++extern attrstat * nfsproc_getattr_2_svc(); ++#define NFSPROC_SETATTR 2 ++extern attrstat * nfsproc_setattr_2(); ++extern attrstat * nfsproc_setattr_2_svc(); ++#define NFSPROC_ROOT 3 ++extern void * nfsproc_root_2(); ++extern void * nfsproc_root_2_svc(); ++#define NFSPROC_LOOKUP 4 ++extern diropres * nfsproc_lookup_2(); ++extern diropres * nfsproc_lookup_2_svc(); ++#define NFSPROC_READLINK 5 ++extern readlinkres * nfsproc_readlink_2(); ++extern readlinkres * nfsproc_readlink_2_svc(); ++#define NFSPROC_READ 6 ++extern readres * nfsproc_read_2(); ++extern readres * nfsproc_read_2_svc(); ++#define NFSPROC_WRITECACHE 7 ++extern void * nfsproc_writecache_2(); ++extern void * nfsproc_writecache_2_svc(); ++#define NFSPROC_WRITE 8 ++extern attrstat * nfsproc_write_2(); ++extern attrstat * nfsproc_write_2_svc(); ++#define NFSPROC_CREATE 9 ++extern diropres * nfsproc_create_2(); ++extern diropres * nfsproc_create_2_svc(); ++#define NFSPROC_REMOVE 10 ++extern nfsstat * nfsproc_remove_2(); ++extern nfsstat * nfsproc_remove_2_svc(); ++#define NFSPROC_RENAME 11 ++extern nfsstat * nfsproc_rename_2(); ++extern nfsstat * nfsproc_rename_2_svc(); ++#define NFSPROC_LINK 12 ++extern nfsstat * nfsproc_link_2(); ++extern nfsstat * nfsproc_link_2_svc(); ++#define NFSPROC_SYMLINK 13 ++extern nfsstat * nfsproc_symlink_2(); ++extern nfsstat * nfsproc_symlink_2_svc(); ++#define NFSPROC_MKDIR 14 ++extern diropres * nfsproc_mkdir_2(); ++extern diropres * nfsproc_mkdir_2_svc(); ++#define NFSPROC_RMDIR 15 ++extern nfsstat * nfsproc_rmdir_2(); ++extern nfsstat * nfsproc_rmdir_2_svc(); ++#define NFSPROC_READDIR 16 ++extern readdirres * nfsproc_readdir_2(); ++extern readdirres * nfsproc_readdir_2_svc(); ++#define NFSPROC_STATFS 17 ++extern statfsres * nfsproc_statfs_2(); ++extern statfsres * nfsproc_statfs_2_svc(); ++extern int nfs_program_2_freeresult (); ++#endif /* K&R C */ ++ ++/* the xdr functions */ ++ ++#if defined(__STDC__) || defined(__cplusplus) ++extern bool_t xdr_nfsstat (XDR *, nfsstat*); ++extern bool_t xdr_ftype (XDR *, ftype*); ++extern bool_t xdr_nfs_fh (XDR *, nfs_fh*); ++extern bool_t xdr_nfstime (XDR *, nfstime*); ++extern bool_t xdr_fattr (XDR *, fattr*); ++extern bool_t xdr_sattr (XDR *, sattr*); ++extern bool_t xdr_filename (XDR *, filename*); ++extern bool_t xdr_nfspath (XDR *, nfspath*); ++extern bool_t xdr_attrstat (XDR *, attrstat*); ++extern bool_t xdr_sattrargs (XDR *, sattrargs*); ++extern bool_t xdr_diropargs (XDR *, diropargs*); ++extern bool_t xdr_diropokres (XDR *, diropokres*); ++extern bool_t xdr_diropres (XDR *, diropres*); ++extern bool_t xdr_readlinkres (XDR *, readlinkres*); ++extern bool_t xdr_readargs (XDR *, readargs*); ++extern bool_t xdr_readokres (XDR *, readokres*); ++extern bool_t xdr_readres (XDR *, readres*); ++extern bool_t xdr_writeargs (XDR *, writeargs*); ++extern bool_t xdr_createargs (XDR *, createargs*); ++extern bool_t xdr_renameargs (XDR *, renameargs*); ++extern bool_t xdr_linkargs (XDR *, linkargs*); ++extern bool_t xdr_symlinkargs (XDR *, symlinkargs*); ++extern bool_t xdr_nfscookie (XDR *, nfscookie); ++extern bool_t xdr_readdirargs (XDR *, readdirargs*); ++extern bool_t xdr_entry (XDR *, entry*); ++extern bool_t xdr_dirlist (XDR *, dirlist*); ++extern bool_t xdr_readdirres (XDR *, readdirres*); ++extern bool_t xdr_statfsokres (XDR *, statfsokres*); ++extern bool_t xdr_statfsres (XDR *, statfsres*); ++ ++#else /* K&R C */ ++extern bool_t xdr_nfsstat (); ++extern bool_t xdr_ftype (); ++extern bool_t xdr_nfs_fh (); ++extern bool_t xdr_nfstime (); ++extern bool_t xdr_fattr (); ++extern bool_t xdr_sattr (); ++extern bool_t xdr_filename (); ++extern bool_t xdr_nfspath (); ++extern bool_t xdr_attrstat (); ++extern bool_t xdr_sattrargs (); ++extern bool_t xdr_diropargs (); ++extern bool_t xdr_diropokres (); ++extern bool_t xdr_diropres (); ++extern bool_t xdr_readlinkres (); ++extern bool_t xdr_readargs (); ++extern bool_t xdr_readokres (); ++extern bool_t xdr_readres (); ++extern bool_t xdr_writeargs (); ++extern bool_t xdr_createargs (); ++extern bool_t xdr_renameargs (); ++extern bool_t xdr_linkargs (); ++extern bool_t xdr_symlinkargs (); ++extern bool_t xdr_nfscookie (); ++extern bool_t xdr_readdirargs (); ++extern bool_t xdr_entry (); ++extern bool_t xdr_dirlist (); ++extern bool_t xdr_readdirres (); ++extern bool_t xdr_statfsokres (); ++extern bool_t xdr_statfsres (); ++#endif + #endif /* HAVE_RPCSVC_NFS_PROT_H */ + + /* diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch index df20d5c..f1fa47b 100644 --- a/am-utils-6.2-use-linux-libtirpc-if-present.patch +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -10,12 +10,12 @@ Signed-off-by: Ian Kent Makefile.am | 3 ++- configure.ac | 4 ++++ include/am_compat.h | 8 ++++++-- - m4/macros/check_linux_libtirpc.m4 | 13 +++++++++++++ - 4 files changed, 25 insertions(+), 3 deletions(-) + m4/macros/check_linux_libtirpc.m4 | 14 ++++++++++++++ + 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 m4/macros/check_linux_libtirpc.m4 diff --git a/Makefile.am b/Makefile.am -index bae4615..e094e95 100644 +index bae4615e..e094e950 100644 --- a/Makefile.am +++ b/Makefile.am @@ -146,7 +146,8 @@ EXTRA_DIST_M4 = \ @@ -29,7 +29,7 @@ index bae4615..e094e95 100644 EXTRA_DIST_CONF = \ conf/autofs/autofs_default.h \ diff --git a/configure.ac b/configure.ac -index ce61925..98b444d 100644 +index ce619257..98b444d3 100644 --- a/configure.ac +++ b/configure.ac @@ -222,6 +222,9 @@ dnl lots of code. So I am forced to use a special purpose macro that sets @@ -51,7 +51,7 @@ index ce61925..98b444d 100644 cdfs/cdfs_mount.h \ fs/udf/udf_mount.h \ diff --git a/include/am_compat.h b/include/am_compat.h -index 3463f3f..d6826fc 100644 +index 3463f3fa..d6826fc7 100644 --- a/include/am_compat.h +++ b/include/am_compat.h @@ -454,11 +454,15 @@ struct hsfs_args { @@ -74,20 +74,21 @@ index 3463f3f..d6826fc 100644 #ifndef INADDR_NONE diff --git a/m4/macros/check_linux_libtirpc.m4 b/m4/macros/check_linux_libtirpc.m4 new file mode 100644 -index 0000000..918423c +index 00000000..0abd1ad3 --- /dev/null +++ b/m4/macros/check_linux_libtirpc.m4 -@@ -0,0 +1,13 @@ +@@ -0,0 +1,14 @@ +dnl ###################################################################### +dnl Check for Linux libtirpc library +AC_DEFUN([AMU_CHECK_LIBTIRPC],[ -+TIRPC_CPPFLAGS="" -+TIRPC_LIBS="" -+ +AC_CHECK_HEADER(tirpc/netconfig.h,[ -+ TIRPC_CPPFLAGS="-I/usr/include/tirpc" -+ AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) -+ AC_CHECK_LIB(tirpc, clnt_tli_create, [TIRPC_LIBS="-ltirpc"], [TIRPC_CPPFLAGS=""])]) -+ AMU_CFLAGS="$AMU_CFLAGS $TIRPC_CPPFLAGS" -+ LIBS="$LIBS $TIRPC_LIBS" ++ amu_check_libtirpc_save_CPPFLAGS=$CPPFLAGS ++ CPPFLAGS="$CPPFLAGS -I/usr/include/tirpc" ++ AC_CHECK_LIB(tirpc,clnt_tli_create,,amu_check_libtirpc=notfound)]) ++ if test "$amu_check_libtirpc" = "notfound" ++ then ++ CPPFLAGS="$amu_check_libtirpc_save_CPPFLAGS" ++ else ++ AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) ++ fi +]) diff --git a/am-utils.spec b/am-utils.spec index e71c412..7e6c5a2 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 30%{?dist} +Release: 31%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -85,6 +85,9 @@ Patch34: am-utils-6.2-fix-umount-to-mount-race.patch Patch35: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch +Patch36: am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch +Patch37: am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -143,6 +146,8 @@ mounting and unmounting filesystems. %patch33 -p1 %patch34 -p1 %patch35 -p1 +%patch36 -p1 +%patch37 -p1 ./bootstrap @@ -154,6 +159,8 @@ chmod +x find-requires %configure \ --enable-shared \ --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ + --enable-cppflags="-I%{_includedir}/nsl" \ + --enable-ldflags="%{_libdir}/nsl" \ --enable-libs="-lnsl -lresolv" \ --enable-debug @@ -254,6 +261,9 @@ fi %{_libdir}/libamu.so* %changelog +* Sun Feb 06 2018 Ian Kent - 5:6.2.0-31 +- try to workaround the removal of RPC code from glibc. + * Sun Feb 04 2018 Ian Kent - 5:6.2.0-30 - Add "BuildRequires: kernel-headers" for linux/version.h requirement. From e826a424cd8c83cd0c906d1d4720beb67e01a14a Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 6 Feb 2018 14:37:19 +0800 Subject: [PATCH 117/157] - add libnsl2 Requires and libnsl2-devel BuildRequires. --- am-utils.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 7e6c5a2..7a8e11d 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 31%{?dist} +Release: 32%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -28,12 +28,14 @@ BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel BuildRequires: kernel-headers +BuildRequires: libnsl2-devel Requires: rpcbind Requires: grep Requires: gawk Requires: findutils Requires: libtirpc +Requires: libnsl2 Requires(pre): /usr/bin/grep Requires(post): /sbin/install-info @@ -261,7 +263,10 @@ fi %{_libdir}/libamu.so* %changelog -* Sun Feb 06 2018 Ian Kent - 5:6.2.0-31 +* Mon Feb 06 2018 Ian Kent - 5:6.2.0-32 +- add libnsl2 Requires and libnsl2-devel BuildRequires. + +* Mon Feb 06 2018 Ian Kent - 5:6.2.0-31 - try to workaround the removal of RPC code from glibc. * Sun Feb 04 2018 Ian Kent - 5:6.2.0-30 From 9705d357ef0fa2276122eb19ffa68acd96238f2e Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 6 Feb 2018 14:49:16 +0800 Subject: [PATCH 118/157] - fix --enable-ldflags argument mistake. --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 7a8e11d..28ed2f9 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -162,7 +162,7 @@ chmod +x find-requires --enable-shared \ --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ --enable-cppflags="-I%{_includedir}/nsl" \ - --enable-ldflags="%{_libdir}/nsl" \ + --enable-ldflags="-L%{_libdir}/nsl" \ --enable-libs="-lnsl -lresolv" \ --enable-debug From 12433ee32c578d6f11ce15336bef424e16a3e050 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 6 Feb 2018 16:07:20 +0800 Subject: [PATCH 119/157] - replace workaround for missing RPC code with package rpcsvc-proto-devel. --- ...unt-for-glibc-removed-rpcsvc_mount_h.patch | 160 ------ ...-for-glibc-removed-rpcsvc_nfs_prot_h.patch | 463 ------------------ am-utils.spec | 15 +- 3 files changed, 7 insertions(+), 631 deletions(-) delete mode 100644 am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch delete mode 100644 am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch diff --git a/am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch b/am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch deleted file mode 100644 index 04ba5a0..0000000 --- a/am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch +++ /dev/null @@ -1,160 +0,0 @@ -am-utils-6.2 - account for glibc removed rpcsvc/mount.h - -From: Ian Kent - -The glibc RPC code may have been removed and if so rpcsvc/mount.h -is no longer available in any package. - -Account for this by including the old glibc rpcsvc/mount.h directly -in nfs_prot_linux.h. - -Signed-off-by: Ian Kent ---- - conf/nfs_prot/nfs_prot_linux.h | 134 ++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 134 insertions(+) - -diff --git a/conf/nfs_prot/nfs_prot_linux.h b/conf/nfs_prot/nfs_prot_linux.h -index 9934b440..63493712 100644 ---- a/conf/nfs_prot/nfs_prot_linux.h -+++ b/conf/nfs_prot/nfs_prot_linux.h -@@ -481,6 +481,140 @@ extern bool_t xdr_statfsres (); - #endif - #endif /* HAVE_RPCSVC_NFS_PROT_H */ - -+#ifndef HAVE_RPCSVC_MOUNT_H -+/* -+ * On Linux the RPC code may have been removed from glibc. -+ * If HAVE_RPCSVC_MOUNT_H is undefined that is the case -+ * and there is no rpcsvc/imount.h anywhere so provide it -+ * here. -+ */ -+#include -+ -+#define MNTPATHLEN 1024 -+#define MNTNAMLEN 255 -+#define FHSIZE 32 -+ -+typedef char fhandle[FHSIZE]; -+ -+struct fhstatus { -+ u_int fhs_status; -+ union { -+ fhandle fhs_fhandle; -+ } fhstatus_u; -+}; -+typedef struct fhstatus fhstatus; -+ -+typedef char *dirpath; -+ -+typedef char *name; -+ -+typedef struct mountbody *mountlist; -+ -+struct mountbody { -+ name ml_hostname; -+ dirpath ml_directory; -+ mountlist ml_next; -+}; -+typedef struct mountbody mountbody; -+ -+typedef struct groupnode *groups; -+ -+struct groupnode { -+ name gr_name; -+ groups gr_next; -+}; -+typedef struct groupnode groupnode; -+ -+typedef struct exportnode *exports; -+ -+struct exportnode { -+ dirpath ex_dir; -+ groups ex_groups; -+ exports ex_next; -+}; -+typedef struct exportnode exportnode; -+ -+#define MOUNTPROG 100005 -+#define MOUNTVERS 1 -+ -+#if defined(__STDC__) || defined(__cplusplus) -+#define MOUNTPROC_NULL 0 -+extern void * mountproc_null_1(void *, CLIENT *); -+extern void * mountproc_null_1_svc(void *, struct svc_req *); -+#define MOUNTPROC_MNT 1 -+extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *); -+extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *); -+#define MOUNTPROC_DUMP 2 -+extern mountlist * mountproc_dump_1(void *, CLIENT *); -+extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *); -+#define MOUNTPROC_UMNT 3 -+extern void * mountproc_umnt_1(dirpath *, CLIENT *); -+extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *); -+#define MOUNTPROC_UMNTALL 4 -+extern void * mountproc_umntall_1(void *, CLIENT *); -+extern void * mountproc_umntall_1_svc(void *, struct svc_req *); -+#define MOUNTPROC_EXPORT 5 -+extern exports * mountproc_export_1(void *, CLIENT *); -+extern exports * mountproc_export_1_svc(void *, struct svc_req *); -+#define MOUNTPROC_EXPORTALL 6 -+extern exports * mountproc_exportall_1(void *, CLIENT *); -+extern exports * mountproc_exportall_1_svc(void *, struct svc_req *); -+extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); -+ -+#else /* K&R C */ -+#define MOUNTPROC_NULL 0 -+extern void * mountproc_null_1(); -+extern void * mountproc_null_1_svc(); -+#define MOUNTPROC_MNT 1 -+extern fhstatus * mountproc_mnt_1(); -+extern fhstatus * mountproc_mnt_1_svc(); -+#define MOUNTPROC_DUMP 2 -+extern mountlist * mountproc_dump_1(); -+extern mountlist * mountproc_dump_1_svc(); -+#define MOUNTPROC_UMNT 3 -+extern void * mountproc_umnt_1(); -+extern void * mountproc_umnt_1_svc(); -+#define MOUNTPROC_UMNTALL 4 -+extern void * mountproc_umntall_1(); -+extern void * mountproc_umntall_1_svc(); -+#define MOUNTPROC_EXPORT 5 -+extern exports * mountproc_export_1(); -+extern exports * mountproc_export_1_svc(); -+#define MOUNTPROC_EXPORTALL 6 -+extern exports * mountproc_exportall_1(); -+extern exports * mountproc_exportall_1_svc(); -+extern int mountprog_1_freeresult (); -+#endif /* K&R C */ -+ -+/* the xdr functions */ -+ -+#if defined(__STDC__) || defined(__cplusplus) -+extern bool_t xdr_fhandle (XDR *, fhandle); -+extern bool_t xdr_fhstatus (XDR *, fhstatus*); -+extern bool_t xdr_dirpath (XDR *, dirpath*); -+extern bool_t xdr_name (XDR *, name*); -+extern bool_t xdr_mountlist (XDR *, mountlist*); -+extern bool_t xdr_mountbody (XDR *, mountbody*); -+extern bool_t xdr_groups (XDR *, groups*); -+extern bool_t xdr_groupnode (XDR *, groupnode*); -+extern bool_t xdr_exports (XDR *, exports*); -+extern bool_t xdr_exportnode (XDR *, exportnode*); -+ -+#else /* K&R C */ -+extern bool_t xdr_fhandle (); -+extern bool_t xdr_fhstatus (); -+extern bool_t xdr_dirpath (); -+extern bool_t xdr_name (); -+extern bool_t xdr_mountlist (); -+extern bool_t xdr_mountbody (); -+extern bool_t xdr_groups (); -+extern bool_t xdr_groupnode (); -+extern bool_t xdr_exports (); -+extern bool_t xdr_exportnode (); -+ -+#endif /* K&R C */ -+#endif -+ - /* - * Hard-code support for some file systems so the built amd - * binary can always run them. Also, this helps detection of iso9660 diff --git a/am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch b/am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch deleted file mode 100644 index c925902..0000000 --- a/am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch +++ /dev/null @@ -1,463 +0,0 @@ -am-utils-6.2 - account for glibc removed rpcsvc/nfs_prot.h - -From: Ian Kent - -The glibc RPC code may have been removed and if so rpcsvc/nfs_prot.h -is no longer available in any package. - -Account for this by including the old glibc rpcsvc/nfs_prot.h directly -in nfs_prot_linux.h. - -Signed-off-by: Ian Kent ---- - conf/nfs_prot/nfs_prot_linux.h | 437 ++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 437 insertions(+) - -diff --git a/conf/nfs_prot/nfs_prot_linux.h b/conf/nfs_prot/nfs_prot_linux.h -index 7ccf18f0..9934b440 100644 ---- a/conf/nfs_prot/nfs_prot_linux.h -+++ b/conf/nfs_prot/nfs_prot_linux.h -@@ -42,6 +42,443 @@ - - #ifdef HAVE_RPCSVC_NFS_PROT_H - # include -+#else -+/* -+ * On Linux the RPC code may have been removed from glibc. -+ * If HAVE_RPCSVC_NFS_PROT_H is undefined that is the case -+ * and there is no rpcsvc/nfs_prot.h anywhere so provide it -+ * here. -+ */ -+#include -+ -+#define NFS_PORT 2049 -+#define NFS_MAXDATA 8192 -+#define NFS_MAXPATHLEN 1024 -+#define NFS_MAXNAMLEN 255 -+#define NFS_FHSIZE 32 -+#define NFS_COOKIESIZE 4 -+#define NFS_FIFO_DEV -1 -+#define NFSMODE_FMT 0170000 -+#define NFSMODE_DIR 0040000 -+#define NFSMODE_CHR 0020000 -+#define NFSMODE_BLK 0060000 -+#define NFSMODE_REG 0100000 -+#define NFSMODE_LNK 0120000 -+#define NFSMODE_SOCK 0140000 -+#define NFSMODE_FIFO 0010000 -+ -+enum nfsstat { -+ NFS_OK = 0, -+ NFSERR_PERM = 1, -+ NFSERR_NOENT = 2, -+ NFSERR_IO = 5, -+ NFSERR_NXIO = 6, -+ NFSERR_ACCES = 13, -+ NFSERR_EXIST = 17, -+ NFSERR_NODEV = 19, -+ NFSERR_NOTDIR = 20, -+ NFSERR_ISDIR = 21, -+ NFSERR_FBIG = 27, -+ NFSERR_NOSPC = 28, -+ NFSERR_ROFS = 30, -+ NFSERR_NAMETOOLONG = 63, -+ NFSERR_NOTEMPTY = 66, -+ NFSERR_DQUOT = 69, -+ NFSERR_STALE = 70, -+ NFSERR_WFLUSH = 99, -+}; -+typedef enum nfsstat nfsstat; -+ -+enum ftype { -+ NFNON = 0, -+ NFREG = 1, -+ NFDIR = 2, -+ NFBLK = 3, -+ NFCHR = 4, -+ NFLNK = 5, -+ NFSOCK = 6, -+ NFBAD = 7, -+ NFFIFO = 8, -+}; -+typedef enum ftype ftype; -+ -+struct nfs_fh { -+ char data[NFS_FHSIZE]; -+}; -+typedef struct nfs_fh nfs_fh; -+ -+struct nfstime { -+ u_int seconds; -+ u_int useconds; -+}; -+typedef struct nfstime nfstime; -+ -+struct fattr { -+ ftype type; -+ u_int mode; -+ u_int nlink; -+ u_int uid; -+ u_int gid; -+ u_int size; -+ u_int blocksize; -+ u_int rdev; -+ u_int blocks; -+ u_int fsid; -+ u_int fileid; -+ nfstime atime; -+ nfstime mtime; -+ nfstime ctime; -+}; -+typedef struct fattr fattr; -+ -+struct sattr { -+ u_int mode; -+ u_int uid; -+ u_int gid; -+ u_int size; -+ nfstime atime; -+ nfstime mtime; -+}; -+typedef struct sattr sattr; -+ -+typedef char *filename; -+ -+typedef char *nfspath; -+ -+struct attrstat { -+ nfsstat status; -+ union { -+ fattr attributes; -+ } attrstat_u; -+}; -+typedef struct attrstat attrstat; -+ -+struct sattrargs { -+ nfs_fh file; -+ sattr attributes; -+}; -+typedef struct sattrargs sattrargs; -+ -+struct diropargs { -+ nfs_fh dir; -+ filename name; -+}; -+typedef struct diropargs diropargs; -+ -+struct diropokres { -+ nfs_fh file; -+ fattr attributes; -+}; -+typedef struct diropokres diropokres; -+ -+struct diropres { -+ nfsstat status; -+ union { -+ diropokres diropres; -+ } diropres_u; -+}; -+typedef struct diropres diropres; -+ -+struct readlinkres { -+ nfsstat status; -+ union { -+ nfspath data; -+ } readlinkres_u; -+}; -+typedef struct readlinkres readlinkres; -+ -+struct readargs { -+ nfs_fh file; -+ u_int offset; -+ u_int count; -+ u_int totalcount; -+}; -+typedef struct readargs readargs; -+ -+struct readokres { -+ fattr attributes; -+ struct { -+ u_int data_len; -+ char *data_val; -+ } data; -+}; -+typedef struct readokres readokres; -+ -+struct readres { -+ nfsstat status; -+ union { -+ readokres reply; -+ } readres_u; -+}; -+typedef struct readres readres; -+ -+struct writeargs { -+ nfs_fh file; -+ u_int beginoffset; -+ u_int offset; -+ u_int totalcount; -+ struct { -+ u_int data_len; -+ char *data_val; -+ } data; -+}; -+typedef struct writeargs writeargs; -+ -+struct createargs { -+ diropargs where; -+ sattr attributes; -+}; -+typedef struct createargs createargs; -+ -+struct renameargs { -+ diropargs from; -+ diropargs to; -+}; -+typedef struct renameargs renameargs; -+ -+struct linkargs { -+ nfs_fh from; -+ diropargs to; -+}; -+typedef struct linkargs linkargs; -+ -+struct symlinkargs { -+ diropargs from; -+ nfspath to; -+ sattr attributes; -+}; -+typedef struct symlinkargs symlinkargs; -+ -+typedef char nfscookie[NFS_COOKIESIZE]; -+ -+struct readdirargs { -+ nfs_fh dir; -+ nfscookie cookie; -+ u_int count; -+}; -+typedef struct readdirargs readdirargs; -+ -+struct entry { -+ u_int fileid; -+ filename name; -+ nfscookie cookie; -+ struct entry *nextentry; -+}; -+typedef struct entry entry; -+ -+struct dirlist { -+ entry *entries; -+ bool_t eof; -+}; -+typedef struct dirlist dirlist; -+ -+struct readdirres { -+ nfsstat status; -+ union { -+ dirlist reply; -+ } readdirres_u; -+}; -+typedef struct readdirres readdirres; -+ -+struct statfsokres { -+ u_int tsize; -+ u_int bsize; -+ u_int blocks; -+ u_int bfree; -+ u_int bavail; -+}; -+typedef struct statfsokres statfsokres; -+ -+struct statfsres { -+ nfsstat status; -+ union { -+ statfsokres reply; -+ } statfsres_u; -+}; -+typedef struct statfsres statfsres; -+ -+#define NFS_PROGRAM 100003 -+#define NFS_VERSION 2 -+ -+#if defined(__STDC__) || defined(__cplusplus) -+#define NFSPROC_NULL 0 -+extern void * nfsproc_null_2(void *, CLIENT *); -+extern void * nfsproc_null_2_svc(void *, struct svc_req *); -+#define NFSPROC_GETATTR 1 -+extern attrstat * nfsproc_getattr_2(nfs_fh *, CLIENT *); -+extern attrstat * nfsproc_getattr_2_svc(nfs_fh *, struct svc_req *); -+#define NFSPROC_SETATTR 2 -+extern attrstat * nfsproc_setattr_2(sattrargs *, CLIENT *); -+extern attrstat * nfsproc_setattr_2_svc(sattrargs *, struct svc_req *); -+#define NFSPROC_ROOT 3 -+extern void * nfsproc_root_2(void *, CLIENT *); -+extern void * nfsproc_root_2_svc(void *, struct svc_req *); -+#define NFSPROC_LOOKUP 4 -+extern diropres * nfsproc_lookup_2(diropargs *, CLIENT *); -+extern diropres * nfsproc_lookup_2_svc(diropargs *, struct svc_req *); -+#define NFSPROC_READLINK 5 -+extern readlinkres * nfsproc_readlink_2(nfs_fh *, CLIENT *); -+extern readlinkres * nfsproc_readlink_2_svc(nfs_fh *, struct svc_req *); -+#define NFSPROC_READ 6 -+extern readres * nfsproc_read_2(readargs *, CLIENT *); -+extern readres * nfsproc_read_2_svc(readargs *, struct svc_req *); -+#define NFSPROC_WRITECACHE 7 -+extern void * nfsproc_writecache_2(void *, CLIENT *); -+extern void * nfsproc_writecache_2_svc(void *, struct svc_req *); -+#define NFSPROC_WRITE 8 -+extern attrstat * nfsproc_write_2(writeargs *, CLIENT *); -+extern attrstat * nfsproc_write_2_svc(writeargs *, struct svc_req *); -+#define NFSPROC_CREATE 9 -+extern diropres * nfsproc_create_2(createargs *, CLIENT *); -+extern diropres * nfsproc_create_2_svc(createargs *, struct svc_req *); -+#define NFSPROC_REMOVE 10 -+extern nfsstat * nfsproc_remove_2(diropargs *, CLIENT *); -+extern nfsstat * nfsproc_remove_2_svc(diropargs *, struct svc_req *); -+#define NFSPROC_RENAME 11 -+extern nfsstat * nfsproc_rename_2(renameargs *, CLIENT *); -+extern nfsstat * nfsproc_rename_2_svc(renameargs *, struct svc_req *); -+#define NFSPROC_LINK 12 -+extern nfsstat * nfsproc_link_2(linkargs *, CLIENT *); -+extern nfsstat * nfsproc_link_2_svc(linkargs *, struct svc_req *); -+#define NFSPROC_SYMLINK 13 -+extern nfsstat * nfsproc_symlink_2(symlinkargs *, CLIENT *); -+extern nfsstat * nfsproc_symlink_2_svc(symlinkargs *, struct svc_req *); -+#define NFSPROC_MKDIR 14 -+extern diropres * nfsproc_mkdir_2(createargs *, CLIENT *); -+extern diropres * nfsproc_mkdir_2_svc(createargs *, struct svc_req *); -+#define NFSPROC_RMDIR 15 -+extern nfsstat * nfsproc_rmdir_2(diropargs *, CLIENT *); -+extern nfsstat * nfsproc_rmdir_2_svc(diropargs *, struct svc_req *); -+#define NFSPROC_READDIR 16 -+extern readdirres * nfsproc_readdir_2(readdirargs *, CLIENT *); -+extern readdirres * nfsproc_readdir_2_svc(readdirargs *, struct svc_req *); -+#define NFSPROC_STATFS 17 -+extern statfsres * nfsproc_statfs_2(nfs_fh *, CLIENT *); -+extern statfsres * nfsproc_statfs_2_svc(nfs_fh *, struct svc_req *); -+extern int nfs_program_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); -+ -+#else /* K&R C */ -+#define NFSPROC_NULL 0 -+extern void * nfsproc_null_2(); -+extern void * nfsproc_null_2_svc(); -+#define NFSPROC_GETATTR 1 -+extern attrstat * nfsproc_getattr_2(); -+extern attrstat * nfsproc_getattr_2_svc(); -+#define NFSPROC_SETATTR 2 -+extern attrstat * nfsproc_setattr_2(); -+extern attrstat * nfsproc_setattr_2_svc(); -+#define NFSPROC_ROOT 3 -+extern void * nfsproc_root_2(); -+extern void * nfsproc_root_2_svc(); -+#define NFSPROC_LOOKUP 4 -+extern diropres * nfsproc_lookup_2(); -+extern diropres * nfsproc_lookup_2_svc(); -+#define NFSPROC_READLINK 5 -+extern readlinkres * nfsproc_readlink_2(); -+extern readlinkres * nfsproc_readlink_2_svc(); -+#define NFSPROC_READ 6 -+extern readres * nfsproc_read_2(); -+extern readres * nfsproc_read_2_svc(); -+#define NFSPROC_WRITECACHE 7 -+extern void * nfsproc_writecache_2(); -+extern void * nfsproc_writecache_2_svc(); -+#define NFSPROC_WRITE 8 -+extern attrstat * nfsproc_write_2(); -+extern attrstat * nfsproc_write_2_svc(); -+#define NFSPROC_CREATE 9 -+extern diropres * nfsproc_create_2(); -+extern diropres * nfsproc_create_2_svc(); -+#define NFSPROC_REMOVE 10 -+extern nfsstat * nfsproc_remove_2(); -+extern nfsstat * nfsproc_remove_2_svc(); -+#define NFSPROC_RENAME 11 -+extern nfsstat * nfsproc_rename_2(); -+extern nfsstat * nfsproc_rename_2_svc(); -+#define NFSPROC_LINK 12 -+extern nfsstat * nfsproc_link_2(); -+extern nfsstat * nfsproc_link_2_svc(); -+#define NFSPROC_SYMLINK 13 -+extern nfsstat * nfsproc_symlink_2(); -+extern nfsstat * nfsproc_symlink_2_svc(); -+#define NFSPROC_MKDIR 14 -+extern diropres * nfsproc_mkdir_2(); -+extern diropres * nfsproc_mkdir_2_svc(); -+#define NFSPROC_RMDIR 15 -+extern nfsstat * nfsproc_rmdir_2(); -+extern nfsstat * nfsproc_rmdir_2_svc(); -+#define NFSPROC_READDIR 16 -+extern readdirres * nfsproc_readdir_2(); -+extern readdirres * nfsproc_readdir_2_svc(); -+#define NFSPROC_STATFS 17 -+extern statfsres * nfsproc_statfs_2(); -+extern statfsres * nfsproc_statfs_2_svc(); -+extern int nfs_program_2_freeresult (); -+#endif /* K&R C */ -+ -+/* the xdr functions */ -+ -+#if defined(__STDC__) || defined(__cplusplus) -+extern bool_t xdr_nfsstat (XDR *, nfsstat*); -+extern bool_t xdr_ftype (XDR *, ftype*); -+extern bool_t xdr_nfs_fh (XDR *, nfs_fh*); -+extern bool_t xdr_nfstime (XDR *, nfstime*); -+extern bool_t xdr_fattr (XDR *, fattr*); -+extern bool_t xdr_sattr (XDR *, sattr*); -+extern bool_t xdr_filename (XDR *, filename*); -+extern bool_t xdr_nfspath (XDR *, nfspath*); -+extern bool_t xdr_attrstat (XDR *, attrstat*); -+extern bool_t xdr_sattrargs (XDR *, sattrargs*); -+extern bool_t xdr_diropargs (XDR *, diropargs*); -+extern bool_t xdr_diropokres (XDR *, diropokres*); -+extern bool_t xdr_diropres (XDR *, diropres*); -+extern bool_t xdr_readlinkres (XDR *, readlinkres*); -+extern bool_t xdr_readargs (XDR *, readargs*); -+extern bool_t xdr_readokres (XDR *, readokres*); -+extern bool_t xdr_readres (XDR *, readres*); -+extern bool_t xdr_writeargs (XDR *, writeargs*); -+extern bool_t xdr_createargs (XDR *, createargs*); -+extern bool_t xdr_renameargs (XDR *, renameargs*); -+extern bool_t xdr_linkargs (XDR *, linkargs*); -+extern bool_t xdr_symlinkargs (XDR *, symlinkargs*); -+extern bool_t xdr_nfscookie (XDR *, nfscookie); -+extern bool_t xdr_readdirargs (XDR *, readdirargs*); -+extern bool_t xdr_entry (XDR *, entry*); -+extern bool_t xdr_dirlist (XDR *, dirlist*); -+extern bool_t xdr_readdirres (XDR *, readdirres*); -+extern bool_t xdr_statfsokres (XDR *, statfsokres*); -+extern bool_t xdr_statfsres (XDR *, statfsres*); -+ -+#else /* K&R C */ -+extern bool_t xdr_nfsstat (); -+extern bool_t xdr_ftype (); -+extern bool_t xdr_nfs_fh (); -+extern bool_t xdr_nfstime (); -+extern bool_t xdr_fattr (); -+extern bool_t xdr_sattr (); -+extern bool_t xdr_filename (); -+extern bool_t xdr_nfspath (); -+extern bool_t xdr_attrstat (); -+extern bool_t xdr_sattrargs (); -+extern bool_t xdr_diropargs (); -+extern bool_t xdr_diropokres (); -+extern bool_t xdr_diropres (); -+extern bool_t xdr_readlinkres (); -+extern bool_t xdr_readargs (); -+extern bool_t xdr_readokres (); -+extern bool_t xdr_readres (); -+extern bool_t xdr_writeargs (); -+extern bool_t xdr_createargs (); -+extern bool_t xdr_renameargs (); -+extern bool_t xdr_linkargs (); -+extern bool_t xdr_symlinkargs (); -+extern bool_t xdr_nfscookie (); -+extern bool_t xdr_readdirargs (); -+extern bool_t xdr_entry (); -+extern bool_t xdr_dirlist (); -+extern bool_t xdr_readdirres (); -+extern bool_t xdr_statfsokres (); -+extern bool_t xdr_statfsres (); -+#endif - #endif /* HAVE_RPCSVC_NFS_PROT_H */ - - /* diff --git a/am-utils.spec b/am-utils.spec index 28ed2f9..5b0d523 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 32%{?dist} +Release: 33%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -29,6 +29,7 @@ BuildRequires: m4 BuildRequires: libtirpc-devel BuildRequires: kernel-headers BuildRequires: libnsl2-devel +BuildRequires: rpcsvc-proto-devel Requires: rpcbind Requires: grep @@ -87,9 +88,6 @@ Patch34: am-utils-6.2-fix-umount-to-mount-race.patch Patch35: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch -Patch36: am-utils-6.2-account-for-glibc-removed-rpcsvc_nfs_prot_h.patch -Patch37: am-utils-6.2-account-for-glibc-removed-rpcsvc_mount_h.patch - # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -148,8 +146,6 @@ mounting and unmounting filesystems. %patch33 -p1 %patch34 -p1 %patch35 -p1 -%patch36 -p1 -%patch37 -p1 ./bootstrap @@ -263,10 +259,13 @@ fi %{_libdir}/libamu.so* %changelog -* Mon Feb 06 2018 Ian Kent - 5:6.2.0-32 +* Tue Feb 06 2018 Ian Kent - 5:6.2.0-33 +- replace workaround for missing RPC code with package rpcsvc-proto-devel. + +* Tue Feb 06 2018 Ian Kent - 5:6.2.0-32 - add libnsl2 Requires and libnsl2-devel BuildRequires. -* Mon Feb 06 2018 Ian Kent - 5:6.2.0-31 +* Tue Feb 06 2018 Ian Kent - 5:6.2.0-31 - try to workaround the removal of RPC code from glibc. * Sun Feb 04 2018 Ian Kent - 5:6.2.0-30 From 6648a5a65f863bc257bc2c34765c2efbaf6b3cf5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 12 Jul 2018 20:10:22 +0000 Subject: [PATCH 120/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 5b0d523..3e7dd64 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 33%{?dist} +Release: 34%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -259,6 +259,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Jul 12 2018 Fedora Release Engineering - 5:6.2.0-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Tue Feb 06 2018 Ian Kent - 5:6.2.0-33 - replace workaround for missing RPC code with package rpcsvc-proto-devel. From c9c51b7071a3026a269ecf526e66374e03872316 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 29 Oct 2018 11:48:15 +0800 Subject: [PATCH 121/157] - disable hesiod support (bz#1643257). --- am-utils.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 3e7dd64..8cb85bd 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 34%{?dist} +Release: 35%{?dist} License: BSD Epoch: 5 Group: System Environment/Daemons @@ -15,7 +15,6 @@ Source3: am-utils.sysconf Source4: am-utils.net.map BuildRequires: gdbm-devel -BuildRequires: hesiod-devel BuildRequires: openldap-devel BuildRequires: autoconf BuildRequires: automake @@ -160,6 +159,7 @@ chmod +x find-requires --enable-cppflags="-I%{_includedir}/nsl" \ --enable-ldflags="-L%{_libdir}/nsl" \ --enable-libs="-lnsl -lresolv" \ + --without-hesiod \ --enable-debug sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool @@ -259,6 +259,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Oct 29 2018 Ian Kent - 5:6.2.0-34 +- disable hesiod support. + * Thu Jul 12 2018 Fedora Release Engineering - 5:6.2.0-34 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild From 7867648970dbe1cba67988942ec097d8e6c0dd2f Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Sun, 27 Jan 2019 15:24:13 +0100 Subject: [PATCH 122/157] Remove obsolete scriptlets References: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets Signed-off-by: Igor Gnatenko --- am-utils.spec | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 8cb85bd..fd46d34 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -38,12 +38,10 @@ Requires: libtirpc Requires: libnsl2 Requires(pre): /usr/bin/grep -Requires(post): /sbin/install-info Requires(post): systemd-sysv Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units -Requires(preun): /sbin/install-info # Fix problems with possible future libtool rebases (#1181698) Patch1: am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch @@ -215,20 +213,9 @@ fi /sbin/ldconfig %systemd_post amd.service -if [ -f %{_infodir}/am-utils.info.gz ]; then - /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : -fi - %preun %systemd_preun amd.service -if [ $1 -eq 0 ]; then - # Package removal, not upgrade - if [ -f %{_infodir}/am-utils.info.gz ]; then - /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : - fi -fi - %postun %systemd_postun_with_restart amd.service From 6aca9ec1552b4dfbaa17c6488c389c9beea2d5db Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Mon, 28 Jan 2019 20:17:38 +0100 Subject: [PATCH 123/157] Remove obsolete Group tag References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag --- am-utils.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index fd46d34..cf902f6 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -5,7 +5,6 @@ Version: 6.2.0 Release: 35%{?dist} License: BSD Epoch: 5 -Group: System Environment/Daemons URL: http://am-utils.org # Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{upstream_version}.tar.gz From 3bd39fea444c88bbb78b3abd23be1efa2aed84cf Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 31 Jan 2019 13:14:13 +0000 Subject: [PATCH 124/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index cf902f6..be54137 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 35%{?dist} +Release: 36%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -245,6 +245,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Jan 31 2019 Fedora Release Engineering - 5:6.2.0-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Mon Oct 29 2018 Ian Kent - 5:6.2.0-34 - disable hesiod support. From c14a48fe7c237965ad2db5a2d974817d2e6d138b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Wed, 24 Apr 2019 14:56:28 +0200 Subject: [PATCH 125/157] Remove hardcoded gzip suffix from GNU info pages --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index be54137..ab08e14 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 36%{?dist} +Release: 37%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -245,6 +245,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Apr 24 2019 Björn Esser - 5:6.2.0-37 +- Remove hardcoded gzip suffix from GNU info pages + * Thu Jan 31 2019 Fedora Release Engineering - 5:6.2.0-36 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From 1abd73baef761a85f0945291743bf7ea708538d9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jul 2019 17:49:03 +0000 Subject: [PATCH 126/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index ab08e14..01a4d86 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 37%{?dist} +Release: 38%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -245,6 +245,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 24 2019 Fedora Release Engineering - 5:6.2.0-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Wed Apr 24 2019 Björn Esser - 5:6.2.0-37 - Remove hardcoded gzip suffix from GNU info pages From 6a94e4334eff17fcf7ed662f4ebae12e1f8b60f3 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 28 Jan 2020 11:29:07 +0000 Subject: [PATCH 127/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 01a4d86..a37c146 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 38%{?dist} +Release: 39%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -245,6 +245,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Jan 28 2020 Fedora Release Engineering - 5:6.2.0-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Wed Jul 24 2019 Fedora Release Engineering - 5:6.2.0-38 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild From 3b4ae1fde7df457c9107828aa16a954a8174f417 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 27 Jul 2020 11:58:39 +0000 Subject: [PATCH 128/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index a37c146..1414c65 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 39%{?dist} +Release: 40%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -245,6 +245,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Jul 27 2020 Fedora Release Engineering - 5:6.2.0-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Tue Jan 28 2020 Fedora Release Engineering - 5:6.2.0-39 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 478854e071583c24bdcb01b941d0040c09214e12 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 31 Jul 2020 23:58:22 +0000 Subject: [PATCH 129/157] - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 1414c65..e845825 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 40%{?dist} +Release: 41%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -245,6 +245,10 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Jul 31 2020 Fedora Release Engineering - 5:6.2.0-41 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Mon Jul 27 2020 Fedora Release Engineering - 5:6.2.0-40 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From e0347233ef1c773471e9ec8c632600807c5a641e Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 16 Dec 2020 23:28:18 +0000 Subject: [PATCH 130/157] Add BuildRequires: make https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot --- am-utils.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/am-utils.spec b/am-utils.spec index e845825..f226d5e 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -28,6 +28,7 @@ BuildRequires: libtirpc-devel BuildRequires: kernel-headers BuildRequires: libnsl2-devel BuildRequires: rpcsvc-proto-devel +BuildRequires: make Requires: rpcbind Requires: grep From e5c17a114150335e6abfb5e2fbef9ebecda92cef Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 00:01:51 +0000 Subject: [PATCH 131/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index f226d5e..6fabed8 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 41%{?dist} +Release: 42%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -246,6 +246,9 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 5:6.2.0-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Fri Jul 31 2020 Fedora Release Engineering - 5:6.2.0-41 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From 0e4dd5d3419085f8a5a3728e093de327fafc0ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 2 Mar 2021 16:14:13 +0100 Subject: [PATCH 132/157] Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. --- am-utils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 6fabed8..a3f76c5 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 42%{?dist} +Release: 43%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -246,6 +246,10 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 5:6.2.0-43 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + * Tue Jan 26 2021 Fedora Release Engineering - 5:6.2.0-42 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 897e55380d5f30707b0002519ec0b98ee0a1d919 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 12:34:04 +0000 Subject: [PATCH 133/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering From 684d5e8c0ee090469d1d335f7afeba165f134580 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 17:29:29 +0000 Subject: [PATCH 134/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index a3f76c5..7add392 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 43%{?dist} +Release: 44%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -246,6 +246,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 21 2021 Fedora Release Engineering - 5:6.2.0-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 5:6.2.0-43 - Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. From bf5ee6b5d0a9a5f0c058b1881dbcca0ee78ca9c7 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Sun, 29 Aug 2021 12:15:38 +0800 Subject: [PATCH 135/157] - add changes for bug 1942977. --- ...ert-AC_HELP_STRING-to-AS_HELP_STRING.patch | 95 ++++++ ...-AC_TRY_COMPILE-to-AC_COMPILE_IFELSE.patch | 272 +++++++++++++++++ ...onvert-AC_TRY_LINK-to-AC_LINK_IFELSE.patch | 67 +++++ ...-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch | 277 ++++++++++++++++++ ...M_CONFIG_HEADER-to-AC_CONFIG_HEADERS.patch | 25 ++ ...-prevent-building-with-autoconf-2_71.patch | 26 ++ am-utils-6.2-fix-double-quote-escaping.patch | 64 ++++ am-utils-6.2-update-configure_ac.patch | 84 ++++++ ...ls-6.2-use-linux-libtirpc-if-present.patch | 9 +- am-utils.spec | 33 ++- 10 files changed, 947 insertions(+), 5 deletions(-) create mode 100644 am-utils-6.2-convert-AC_HELP_STRING-to-AS_HELP_STRING.patch create mode 100644 am-utils-6.2-convert-AC_TRY_COMPILE-to-AC_COMPILE_IFELSE.patch create mode 100644 am-utils-6.2-convert-AC_TRY_LINK-to-AC_LINK_IFELSE.patch create mode 100644 am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch create mode 100644 am-utils-6.2-convert-AM_CONFIG_HEADER-to-AC_CONFIG_HEADERS.patch create mode 100644 am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch create mode 100644 am-utils-6.2-fix-double-quote-escaping.patch create mode 100644 am-utils-6.2-update-configure_ac.patch diff --git a/am-utils-6.2-convert-AC_HELP_STRING-to-AS_HELP_STRING.patch b/am-utils-6.2-convert-AC_HELP_STRING-to-AS_HELP_STRING.patch new file mode 100644 index 0000000..b8208ff --- /dev/null +++ b/am-utils-6.2-convert-AC_HELP_STRING-to-AS_HELP_STRING.patch @@ -0,0 +1,95 @@ +am-utils-6.2 - convert AC_HELP_STRING to AS_HELP_STRING + +From: Ian Kent + +autoconf 2.71 autoreconf tells us AC_HELP_STRING is obsolete. +Use AS_HELP_STRING instead. + +Signed-off-by: Ian Kent +--- + m4/macros/opt_amu_cflags.m4 | 2 +- + m4/macros/opt_cppflags.m4 | 2 +- + m4/macros/opt_debug.m4 | 2 +- + m4/macros/opt_ldflags.m4 | 2 +- + m4/macros/opt_libs.m4 | 2 +- + m4/macros/with_addon.m4 | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/m4/macros/opt_amu_cflags.m4 b/m4/macros/opt_amu_cflags.m4 +index 1194786b..e94dbc24 100644 +--- a/m4/macros/opt_amu_cflags.m4 ++++ b/m4/macros/opt_amu_cflags.m4 +@@ -4,7 +4,7 @@ dnl NOTE: this is only for final compiltions, not for configure tests) + AC_DEFUN([AMU_OPT_AMU_CFLAGS], + [AC_MSG_CHECKING(for additional C option compilation flags) + AC_ARG_ENABLE(am-cflags, +-AC_HELP_STRING([--enable-am-cflags=ARG], ++AS_HELP_STRING([--enable-am-cflags=ARG], + [compile package with ARG additional C flags]), + [ + if test "$enableval" = "" || test "$enableval" = "yes" || test "$enableval" = "no"; then +diff --git a/m4/macros/opt_cppflags.m4 b/m4/macros/opt_cppflags.m4 +index 9cb72362..97197212 100644 +--- a/m4/macros/opt_cppflags.m4 ++++ b/m4/macros/opt_cppflags.m4 +@@ -4,7 +4,7 @@ dnl NOTE: this is for configuration as well as compilations! + AC_DEFUN([AMU_OPT_CPPFLAGS], + [AC_MSG_CHECKING(for configuration/compilation (-I) preprocessor flags) + AC_ARG_ENABLE(cppflags, +-AC_HELP_STRING([--enable-cppflags=ARG], ++AS_HELP_STRING([--enable-cppflags=ARG], + [configure/compile with ARG (-I) preprocessor flags]), + [ + if test "$enableval" = "" || test "$enableval" = "yes" || test "$enableval" = "no"; then +diff --git a/m4/macros/opt_debug.m4 b/m4/macros/opt_debug.m4 +index b6f044e9..bca938ac 100644 +--- a/m4/macros/opt_debug.m4 ++++ b/m4/macros/opt_debug.m4 +@@ -4,7 +4,7 @@ dnl and "no" means none. + AC_DEFUN([AMU_OPT_DEBUG], + [AC_MSG_CHECKING(for debugging options) + AC_ARG_ENABLE(debug, +-AC_HELP_STRING([--enable-debug=ARG],[enable debugging (yes/mem/no)]), ++AS_HELP_STRING([--enable-debug=ARG],[enable debugging (yes/mem/no)]), + [ + if test "$enableval" = yes; then + AC_MSG_RESULT(yes) +diff --git a/m4/macros/opt_ldflags.m4 b/m4/macros/opt_ldflags.m4 +index cf3ee432..51c66601 100644 +--- a/m4/macros/opt_ldflags.m4 ++++ b/m4/macros/opt_ldflags.m4 +@@ -4,7 +4,7 @@ dnl NOTE: this is for configuration as well as compilations! + AC_DEFUN([AMU_OPT_LDFLAGS], + [AC_MSG_CHECKING(for configuration/compilation (-L) library flags) + AC_ARG_ENABLE(ldflags, +-AC_HELP_STRING([--enable-ldflags=ARG], ++AS_HELP_STRING([--enable-ldflags=ARG], + [configure/compile with ARG (-L) library flags]), + [ + if test "$enableval" = "" || test "$enableval" = "yes" || test "$enableval" = "no"; then +diff --git a/m4/macros/opt_libs.m4 b/m4/macros/opt_libs.m4 +index e7414860..40d496ba 100644 +--- a/m4/macros/opt_libs.m4 ++++ b/m4/macros/opt_libs.m4 +@@ -4,7 +4,7 @@ dnl NOTE: this is for configuration as well as compilations! + AC_DEFUN([AMU_OPT_LIBS], + [AC_MSG_CHECKING(for configuration/compilation (-l) library flags) + AC_ARG_ENABLE(libs, +-AC_HELP_STRING([--enable-libs=ARG], ++AS_HELP_STRING([--enable-libs=ARG], + [configure/compile with ARG (-l) library flags]), + [ + if test "$enableval" = "" || test "$enableval" = "yes" || test "$enableval" = "no"; then +diff --git a/m4/macros/with_addon.m4 b/m4/macros/with_addon.m4 +index d8ea8cfa..c3d8a7fa 100644 +--- a/m4/macros/with_addon.m4 ++++ b/m4/macros/with_addon.m4 +@@ -4,7 +4,7 @@ AC_DEFUN([AMU_WITH_ADDON], + [AC_MSG_CHECKING([if $1 is wanted]) + ac_upcase=`echo $1|tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + AC_ARG_WITH($1, +- AC_HELP_STRING([--with-$1], ++ AS_HELP_STRING([--with-$1], + [enable $2 support (default=yes if found)] + ),[ + if test "$withval" = "yes"; then diff --git a/am-utils-6.2-convert-AC_TRY_COMPILE-to-AC_COMPILE_IFELSE.patch b/am-utils-6.2-convert-AC_TRY_COMPILE-to-AC_COMPILE_IFELSE.patch new file mode 100644 index 0000000..d4cd3cf --- /dev/null +++ b/am-utils-6.2-convert-AC_TRY_COMPILE-to-AC_COMPILE_IFELSE.patch @@ -0,0 +1,272 @@ +am-utils-6.2 - convert AC_TRY_COMPILE to AC_COMPILE_IFELSE + +From: Ian Kent + +autoconf 2.71 autoreconf tells us AC_TRY_COMPILE is obsolete. +Convert to use the AC_COMPILE_IFELSE instead. + +Signed-off-by: Ian Kent +--- + m4/macros/c_void_p.m4 | 9 +++++---- + m4/macros/check_varargs_macros.m4 | 24 ++++++++++++++---------- + m4/macros/extern_optarg.m4 | 11 ++++++----- + m4/macros/field_mntent_t_mnt_time_string.m4 | 7 ++++--- + m4/macros/mount_headers.m4 | 4 ++-- + m4/macros/struct_mntent.m4 | 7 ++++--- + m4/macros/struct_mnttab.m4 | 7 ++++--- + m4/macros/try_compile_anyfs.m4 | 8 +++++--- + m4/macros/try_compile_nfs.m4 | 7 ++++--- + m4/macros/try_compile_rpc.m4 | 8 +++++--- + 10 files changed, 53 insertions(+), 39 deletions(-) + +diff --git a/m4/macros/c_void_p.m4 b/m4/macros/c_void_p.m4 +index 3977c9be..64e998ff 100644 +--- a/m4/macros/c_void_p.m4 ++++ b/m4/macros/c_void_p.m4 +@@ -6,11 +6,12 @@ AC_CACHE_CHECK(if compiler can handle void *, + ac_cv_c_void_p, + [ + # try to compile a program which uses void * +-AC_TRY_COMPILE( +-[ ], +-[ ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++[[ ]], ++[[ + void *vp; +-], ac_cv_c_void_p=yes, ac_cv_c_void_p=no) ++]])], ac_cv_c_void_p=yes, ac_cv_c_void_p=no) + ]) + if test "$ac_cv_c_void_p" = yes + then +diff --git a/m4/macros/check_varargs_macros.m4 b/m4/macros/check_varargs_macros.m4 +index 44bd3edf..93c26ffc 100644 +--- a/m4/macros/check_varargs_macros.m4 ++++ b/m4/macros/check_varargs_macros.m4 +@@ -6,23 +6,27 @@ AC_CACHE_CHECK(if compiler can handle variable-length macros, + ac_cv_varargs_macros, + [ + # try C99 style +-AC_TRY_COMPILE( +-[ ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++[[ + #define foo(str,size,fmt,...) bar(__FILE__,__LINE__,(str),(size),(fmt),__VA_ARGS__) +-], +-[ ++]], ++[[ + char a[80]; + foo(a, sizeof(a), "%d,%d", 1, 2); +-], ac_cv_varargs_macros=c99, ++]] ++)], ac_cv_varargs_macros=c99, + # else try gcc style +-AC_TRY_COMPILE( +-[ ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++[[ + #define foo(str,size,args...) bar(__FILE__,__LINE__,(str),(size),(fmt),args) +-], +-[ ++]], ++[[ + char a[80]; + foo(a, sizeof(a), "%d,%d", 1, 2); +-], ac_cv_varargs_macros=gcc, ac_cv_varargs_macros=none)) ++]] ++)], ac_cv_varargs_macros=gcc, ac_cv_varargs_macros=none)) + ]) + if test "$ac_cv_varargs_macros" = c99 + then +diff --git a/m4/macros/extern_optarg.m4 b/m4/macros/extern_optarg.m4 +index 70cb50ae..b082b061 100644 +--- a/m4/macros/extern_optarg.m4 ++++ b/m4/macros/extern_optarg.m4 +@@ -6,8 +6,9 @@ AC_CACHE_CHECK(if external definition for optarg[] exists, + ac_cv_extern_optarg, + [ + # try to compile program that uses the variable +-AC_TRY_COMPILE( +-[ ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++[[ + #ifdef HAVE_STDIO_H + # include + #endif /* HAVE_STDIO_H */ +@@ -23,10 +24,10 @@ AC_TRY_COMPILE( + #ifdef HAVE_ERRNO_H + # include + #endif /* HAVE_ERRNO_H */ +-], +-[ ++]], ++[[ + char *cp = optarg; +-], ac_cv_extern_optarg=yes, ac_cv_extern_optarg=no) ++]])], ac_cv_extern_optarg=yes, ac_cv_extern_optarg=no) + ]) + if test "$ac_cv_extern_optarg" = yes + then +diff --git a/m4/macros/field_mntent_t_mnt_time_string.m4 b/m4/macros/field_mntent_t_mnt_time_string.m4 +index 42ad647b..9ed83f46 100644 +--- a/m4/macros/field_mntent_t_mnt_time_string.m4 ++++ b/m4/macros/field_mntent_t_mnt_time_string.m4 +@@ -6,7 +6,8 @@ AC_CACHE_CHECK(if mntent_t field mnt_time exist as type string, + ac_cv_field_mntent_t_mnt_time_string, + [ + # try to compile a program +-AC_TRY_COMPILE( ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( + AMU_MOUNT_HEADERS( + [ + /* now set the typedef */ +@@ -20,13 +21,13 @@ typedef struct mnttab mntent_t; + # endif /* not HAVE_STRUCT_MNTTAB */ + #endif /* not HAVE_STRUCT_MNTENT */ + ]), +-[ ++[[ + mntent_t mtt; + char *cp = "test"; + int i; + mtt.mnt_time = cp; + i = mtt.mnt_time[0]; +-], ac_cv_field_mntent_t_mnt_time_string=yes, ac_cv_field_mntent_t_mnt_time_string=no) ++]])], ac_cv_field_mntent_t_mnt_time_string=yes, ac_cv_field_mntent_t_mnt_time_string=no) + ]) + if test "$ac_cv_field_mntent_t_mnt_time_string" = yes + then +diff --git a/m4/macros/mount_headers.m4 b/m4/macros/mount_headers.m4 +index cf7b9103..3a1226f4 100644 +--- a/m4/macros/mount_headers.m4 ++++ b/m4/macros/mount_headers.m4 +@@ -1,12 +1,12 @@ + dnl ###################################################################### + dnl an M4 macro to include a list of common headers being used everywhere + define(AMU_MOUNT_HEADERS, +-[ ++[[ + #include "${srcdir}/include/mount_headers1.h" + #include AMU_NFS_PROTOCOL_HEADER + #include "${srcdir}/include/mount_headers2.h" + + $1 +-] ++]] + ) + dnl ====================================================================== +diff --git a/m4/macros/struct_mntent.m4 b/m4/macros/struct_mntent.m4 +index d9f48119..9a9ad18b 100644 +--- a/m4/macros/struct_mntent.m4 ++++ b/m4/macros/struct_mntent.m4 +@@ -6,12 +6,13 @@ AC_CACHE_CHECK(for struct mntent, + ac_cv_have_struct_mntent, + [ + # try to compile a program which may have a definition for the structure +-AC_TRY_COMPILE( ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( + AMU_MOUNT_HEADERS + , +-[ ++[[ + struct mntent mt; +-], ac_cv_have_struct_mntent=yes, ac_cv_have_struct_mntent=no) ++]])], ac_cv_have_struct_mntent=yes, ac_cv_have_struct_mntent=no) + ]) + if test "$ac_cv_have_struct_mntent" = yes + then +diff --git a/m4/macros/struct_mnttab.m4 b/m4/macros/struct_mnttab.m4 +index ed1cb563..4eabbaa4 100644 +--- a/m4/macros/struct_mnttab.m4 ++++ b/m4/macros/struct_mnttab.m4 +@@ -6,12 +6,13 @@ AC_CACHE_CHECK(for struct mnttab, + ac_cv_have_struct_mnttab, + [ + # try to compile a program which may have a definition for the structure +-AC_TRY_COMPILE( ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( + AMU_MOUNT_HEADERS + , +-[ ++[[ + struct mnttab mt; +-], ac_cv_have_struct_mnttab=yes, ac_cv_have_struct_mnttab=no) ++]])], ac_cv_have_struct_mnttab=yes, ac_cv_have_struct_mnttab=no) + ]) + if test "$ac_cv_have_struct_mnttab" = yes + then +diff --git a/m4/macros/try_compile_anyfs.m4 b/m4/macros/try_compile_anyfs.m4 +index 22a57198..cd34eee4 100644 +--- a/m4/macros/try_compile_anyfs.m4 ++++ b/m4/macros/try_compile_anyfs.m4 +@@ -6,8 +6,9 @@ dnl [$2] action to take if the program compiled (3rd arg to AC_TRY_COMPILE) + dnl [$3] action to take if program did not compile (4rd arg to AC_TRY_COMPILE) + AC_DEFUN([AC_TRY_COMPILE_ANYFS], + [# try to compile a program which may have a definition for a structure +-AC_TRY_COMPILE( +-[ ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++[[ + #ifdef HAVE_SYS_TYPES_H + # include + #endif /* HAVE_SYS_TYPES_H */ +@@ -180,6 +181,7 @@ struct netexport { int this_is_SO_wrong; }; /* for bsdi-2.1 */ + #ifdef HAVE_FS_UDF_UDF_MOUNT_H + # include + #endif /* HAVE_FS_UDF_UDF_MOUNT_H */ +-], [$1], [$2], [$3]) ++]], [[$1]] ++)], [$2], [$3]) + ]) + dnl ====================================================================== +diff --git a/m4/macros/try_compile_nfs.m4 b/m4/macros/try_compile_nfs.m4 +index d04e1961..9a7a3892 100644 +--- a/m4/macros/try_compile_nfs.m4 ++++ b/m4/macros/try_compile_nfs.m4 +@@ -6,8 +6,9 @@ dnl [$2] action to take if the program compiled (3rd arg to AC_TRY_COMPILE) + dnl [$3] action to take if program did not compile (4rd arg to AC_TRY_COMPILE) + AC_DEFUN([AC_TRY_COMPILE_NFS], + [# try to compile a program which may have a definition for a structure +-AC_TRY_COMPILE( +-AMU_MOUNT_HEADERS +-, [$1], [$2], [$3]) ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++AMU_MOUNT_HEADERS, ++[[$1]])], [$2], [$3]) + ]) + dnl ====================================================================== +diff --git a/m4/macros/try_compile_rpc.m4 b/m4/macros/try_compile_rpc.m4 +index 5c95348c..f98bea7d 100644 +--- a/m4/macros/try_compile_rpc.m4 ++++ b/m4/macros/try_compile_rpc.m4 +@@ -6,8 +6,9 @@ dnl [$2] action to take if the program compiled (3rd arg to AC_TRY_COMPILE) + dnl [$3] action to take if program did not compile (4rd arg to AC_TRY_COMPILE) + AC_DEFUN([AC_TRY_COMPILE_RPC], + [# try to compile a program which may have a definition for a structure +-AC_TRY_COMPILE( +-[ ++AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM( ++[[ + #ifdef HAVE_SYS_TYPES_H + # include + #endif /* HAVE_SYS_TYPES_H */ +@@ -18,6 +19,7 @@ AC_TRY_COMPILE( + #if defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) + # include + #endif /* defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) */ +-], [$1], [$2], [$3]) ++]], [[$1]] ++)], [$2], [$3]) + ]) + dnl ====================================================================== diff --git a/am-utils-6.2-convert-AC_TRY_LINK-to-AC_LINK_IFELSE.patch b/am-utils-6.2-convert-AC_TRY_LINK-to-AC_LINK_IFELSE.patch new file mode 100644 index 0000000..6b753c4 --- /dev/null +++ b/am-utils-6.2-convert-AC_TRY_LINK-to-AC_LINK_IFELSE.patch @@ -0,0 +1,67 @@ +am-utils-6.2 - convert AC_TRY_LINK to AC_LINK_IFELSE + +From: Ian Kent + +autoconf 2.71 autoreconf tells us AC_TRY_LINK is obsolete. +Convert to use the AC_LINK_IFELSE instead. + +Signed-off-by: Ian Kent +--- + m4/macros/check_lib2.m4 | 30 ++++++++++++++++++------------ + 1 file changed, 18 insertions(+), 12 deletions(-) + +diff --git a/m4/macros/check_lib2.m4 b/m4/macros/check_lib2.m4 +index 64e6bb5b..7d4e5a5e 100644 +--- a/m4/macros/check_lib2.m4 ++++ b/m4/macros/check_lib2.m4 +@@ -16,32 +16,38 @@ AC_CACHE_VAL(ac_cv_lib_$ac_lib_var, + + # first try with base library, without auxiliary library + LIBS="-l$1 $LIBS" +-AC_TRY_LINK(dnl +-ifelse([$2], [main], , dnl Avoid conflicting decl of main. ++dnl ithe ifelse() macro is used to avoid conflicting decl of main. ++AC_LINK_IFELSE( ++[AC_LANG_SOURCE( ++[[ ++ifelse([$2], [main], , + [/* Override any gcc2 internal prototype to avoid an error. */ + ] + [/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ + char $2(); +-]), +- [$2()], +- eval "ac_cv_lib_$ac_lib_var=\"$1\"", +- eval "ac_cv_lib_$ac_lib_var=no") ++])]], ++ [[$2()]])], ++ [eval "ac_cv_lib_$ac_lib_var=\"$1\""], ++ [eval "ac_cv_lib_$ac_lib_var=no"]) + + # if OK, set to no auxiliary library, else try auxiliary library + if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = no"; then + LIBS="-l$1 $5 $LIBS" +- AC_TRY_LINK(dnl +- ifelse([$2], [main], , dnl Avoid conflicting decl of main. ++dnl ithe ifelse() macro is used to avoid conflicting decl of main. ++ AC_LINK_IFELSE( ++ [AC_LANG_SOURCE( ++ [[ ++ ifelse([$2], [main], , + [/* Override any gcc2 internal prototype to avoid an error. */ + ] + [/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ + char $2(); +- ]), +- [$2()], +- eval "ac_cv_lib_$ac_lib_var=\"$1 $5\"", +- eval "ac_cv_lib_$ac_lib_var=no") ++ ])]], ++ [[$2()]])], ++ [eval "ac_cv_lib_$ac_lib_var=\"$1 $5\""], ++ [eval "ac_cv_lib_$ac_lib_var=no"]) + fi + + LIBS="$ac_save_LIBS" diff --git a/am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch b/am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch new file mode 100644 index 0000000..5230395 --- /dev/null +++ b/am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch @@ -0,0 +1,277 @@ +am-utils-6.2 - convert AC_TRY_RUN to AC_RUN_IFELSE + +From: Ian Kent + +autoconf 2.71 autoreconf tells us AC_TRY_RUN is obsolete. +Convert to use the AC_RUN_IFELSE instead. + +Signed-off-by: Ian Kent +--- + m4/macros/check_fs_mntent.m4 | 7 ++++--- + m4/macros/check_gnu_getopt.m4 | 6 ++++-- + m4/macros/check_libwrap_severity.m4 | 14 ++++++++------ + m4/macros/check_mnttab_type.m4 | 7 ++++--- + m4/macros/check_mount_type.m4 | 7 ++++--- + m4/macros/expand_cpp_hex.m4 | 7 ++++--- + m4/macros/expand_cpp_int.m4 | 7 ++++--- + m4/macros/expand_cpp_string.m4 | 7 ++++--- + m4/macros/expand_run_string.m4 | 7 ++++--- + m4/macros/func_bad_hasmntopt.m4 | 5 +++-- + 10 files changed, 43 insertions(+), 31 deletions(-) + +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index 6146c7ee..e612b4ec 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -144,8 +144,9 @@ do + fi + + # run a test program for bsdi3 +- AC_TRY_RUN( +- [ ++ AC_RUN_IFELSE( ++ [AC_LANG_SOURCE( ++ [[ + #include + #include + main() +@@ -158,7 +159,7 @@ main() + else + exit(0); + } +- ], [eval "ac_cv_fs_$ac_fs_name=yes" ++ ]])], [eval "ac_cv_fs_$ac_fs_name=yes" + break + ] + ) +diff --git a/m4/macros/check_gnu_getopt.m4 b/m4/macros/check_gnu_getopt.m4 +index 76315321..6ac6440c 100644 +--- a/m4/macros/check_gnu_getopt.m4 ++++ b/m4/macros/check_gnu_getopt.m4 +@@ -3,7 +3,9 @@ dnl Do we have a GNUish getopt + AC_DEFUN([AMU_CHECK_GNU_GETOPT], + [ + AC_CACHE_CHECK([for GNU getopt], ac_cv_sys_gnu_getopt, [ +-AC_TRY_RUN([ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + #include + #include + int main() +@@ -29,7 +31,7 @@ int main() + fprintf(rf, isGNU ? "yes" : "no"); + exit(0); + } +-],[ ++]])],[ + ac_cv_sys_gnu_getopt="`cat conftestresult`" + ],[ + ac_cv_sys_gnu_getopt="fail" +diff --git a/m4/macros/check_libwrap_severity.m4 b/m4/macros/check_libwrap_severity.m4 +index 955ba55a..f57ffcb1 100644 +--- a/m4/macros/check_libwrap_severity.m4 ++++ b/m4/macros/check_libwrap_severity.m4 +@@ -8,22 +8,24 @@ AC_CACHE_CHECK([if libwrap wants caller to define allow_severity and deny_severi + SAVEDLIBS="$LIBS" + LIBS="$LIBS -lwrap" + # run program one without defining our own severity variables +-AC_TRY_RUN( +-[ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + int main() + { + exit(0); + } +-],[ac_tmp_val1="yes"],[ac_tmp_val1="no"]) ++]])],[ac_tmp_val1="yes"],[ac_tmp_val1="no"]) + # run program two with defining our own severity variables +-AC_TRY_RUN( +-[ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + int deny_severity, allow_severity, rfc931_timeout; + int main() + { + exit(0); + } +-],[ac_tmp_val2="yes"],[ac_tmp_val2="no"]) ++]])],[ac_tmp_val2="yes"],[ac_tmp_val2="no"]) + # restore original value of $LIBS + LIBS="$SAVEDLIBS" + # now decide what to do +diff --git a/m4/macros/check_mnttab_type.m4 b/m4/macros/check_mnttab_type.m4 +index 61e1c01b..a840991e 100644 +--- a/m4/macros/check_mnttab_type.m4 ++++ b/m4/macros/check_mnttab_type.m4 +@@ -116,8 +116,9 @@ do + fi + + # then run a test program for bsdi3, tru64, and others +- AC_TRY_RUN( +- [ ++ AC_RUN_IFELSE( ++ [AC_LANG_SOURCE( ++ [[ + #include + #include + main() +@@ -130,7 +131,7 @@ main() + else + exit(0); + } +- ], [eval "ac_cv_mnttab_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ ]])], [eval "ac_cv_mnttab_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" + break + ] + ) +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index 9b08def7..c779e0bf 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -135,8 +135,9 @@ do + fi + + # run a test program for bsdi3 +- AC_TRY_RUN( +- [ ++ AC_RUN_IFELSE( ++ [AC_LANG_SOURCE( ++ [[ + #include + #include + main() +@@ -149,7 +150,7 @@ main() + else + exit(0); + } +- ], [eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ ]])], [eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" + break + ] + ) +diff --git a/m4/macros/expand_cpp_hex.m4 b/m4/macros/expand_cpp_hex.m4 +index 0c7a9e42..13c7c832 100644 +--- a/m4/macros/expand_cpp_hex.m4 ++++ b/m4/macros/expand_cpp_hex.m4 +@@ -10,8 +10,9 @@ AC_EGREP_CPP(0x, + [$1] + $2, + value="notfound" +-AC_TRY_RUN( +-[ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + [$1] + main(argc) + int argc; +@@ -24,7 +25,7 @@ exit(0); + # error no such option $2 + #endif + exit(1); +-}], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") ++}]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" + ) +diff --git a/m4/macros/expand_cpp_int.m4 b/m4/macros/expand_cpp_int.m4 +index 37253769..e58649e8 100644 +--- a/m4/macros/expand_cpp_int.m4 ++++ b/m4/macros/expand_cpp_int.m4 +@@ -12,8 +12,9 @@ AC_EGREP_CPP( + [$1] + $2, + value="notfound" +-AC_TRY_RUN( +-[ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + [$1] + main(argc) + int argc; +@@ -26,7 +27,7 @@ exit(0); + # error no such option $2 + #endif + exit(1); +-}], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") ++}]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" + ) +diff --git a/m4/macros/expand_cpp_string.m4 b/m4/macros/expand_cpp_string.m4 +index 51293c4f..e014b7e4 100644 +--- a/m4/macros/expand_cpp_string.m4 ++++ b/m4/macros/expand_cpp_string.m4 +@@ -10,8 +10,9 @@ AC_EGREP_CPP(\".*\", + [$1] + $2, + value="notfound" +-AC_TRY_RUN( +-[ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + [$1] + main(argc) + int argc; +@@ -24,7 +25,7 @@ exit(0); + # error no such option $2 + #endif + exit(1); +-}], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") ++}]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" + ) +diff --git a/m4/macros/expand_run_string.m4 b/m4/macros/expand_run_string.m4 +index 2cb964e1..f9390020 100644 +--- a/m4/macros/expand_run_string.m4 ++++ b/m4/macros/expand_run_string.m4 +@@ -4,15 +4,16 @@ dnl Takes: (header, code-to-run, [action-if-found, [action-if-not-found]]) + AC_DEFUN([AMU_EXPAND_RUN_STRING], + [ + value="notfound" +-AC_TRY_RUN( +-[ ++AC_RUN_IFELSE( ++[AC_LANG_SOURCE( ++[[ + $1 + main(argc) + int argc; + { + $2 + exit(0); +-}], ++}]])], + [ + value=`./conftest dummy 2>>config.log` + test -z "$value" && value="notfound" +diff --git a/m4/macros/func_bad_hasmntopt.m4 b/m4/macros/func_bad_hasmntopt.m4 +index d458bd30..9071e595 100644 +--- a/m4/macros/func_bad_hasmntopt.m4 ++++ b/m4/macros/func_bad_hasmntopt.m4 +@@ -3,7 +3,8 @@ dnl Check if we have as buggy hasmntopt() libc function + AC_DEFUN([AMU_FUNC_BAD_HASMNTOPT], + [ + AC_CACHE_CHECK([for working hasmntopt], ac_cv_func_hasmntopt_working, +-[AC_TRY_RUN( ++[AC_RUN_IFELSE( ++[AC_LANG_SOURCE( + AMU_MOUNT_HEADERS( + [[ + #ifdef HAVE_MNTENT_H +@@ -47,7 +48,7 @@ int main() + exit(1); + exit(0); + } +-]]), ++]]))], + [ac_cv_func_hasmntopt_working=yes], + [ac_cv_func_hasmntopt_working=no] + )]) diff --git a/am-utils-6.2-convert-AM_CONFIG_HEADER-to-AC_CONFIG_HEADERS.patch b/am-utils-6.2-convert-AM_CONFIG_HEADER-to-AC_CONFIG_HEADERS.patch new file mode 100644 index 0000000..9744db4 --- /dev/null +++ b/am-utils-6.2-convert-AM_CONFIG_HEADER-to-AC_CONFIG_HEADERS.patch @@ -0,0 +1,25 @@ +am-utils-6.2 - convert AM_CONFIG_HEADER to AC_CONFIG_HEADERS + +From: Ian Kent + +autoconf 2.71 autoreconf tells us AM_CONFIG_HEADER macro is obsolete. +Use AC_CONFIG_HEADERS instead. + +Signed-off-by: Ian Kent +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 98b444d3..e1bc3290 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -18,7 +18,7 @@ AC_INIT([am-utils], + AC_MSG_NOTICE(*** INITIALIZATION ***) + AC_CONFIG_SRCDIR([amd/amd.c]) + AC_CONFIG_MACRO_DIR([m4]) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + AH_TOP([ + /* + * Start of am-utils-6.x config.h file. diff --git a/am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch b/am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch new file mode 100644 index 0000000..d97c535 --- /dev/null +++ b/am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch @@ -0,0 +1,26 @@ +am-utils-6.2 - dont prevent autoconf 2.7 build + +From: Ian Kent + +Fedora is updating to autoconf 2.71, stop bootstrap from preventing +the build. + +Signed-off-by: Ian Kent +--- + bootstrap | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bootstrap b/bootstrap +index 000b0167..d454c631 100755 +--- a/bootstrap ++++ b/bootstrap +@@ -9,7 +9,8 @@ validateversion() { + local v="$(autoreconf --version 2>&1 | head -1)" + case "$v" in + *2.69) ;; +- *) echo "am-utils requires autoconf 2.69, you have:" ++ *2.71) ;; ++ *) echo "am-utils requires autoconf 2.69 or 2.71, you have:" + echo " $v" + exit 1;; + esac diff --git a/am-utils-6.2-fix-double-quote-escaping.patch b/am-utils-6.2-fix-double-quote-escaping.patch new file mode 100644 index 0000000..8373b4d --- /dev/null +++ b/am-utils-6.2-fix-double-quote-escaping.patch @@ -0,0 +1,64 @@ +am-utils-6.2 - fix double quote escaping + +From: Ian Kent + +autoconf 2.71 autoreconf tells us that back quotes and double quotes +must not be escaped in certain cases. + +Signed-off-by: Ian Kent +--- + m4/macros/package_bugreport.m4 | 2 +- + m4/macros/package_name.m4 | 2 +- + m4/macros/package_version.m4 | 2 +- + m4/macros/with_addon.m4 | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/m4/macros/package_bugreport.m4 b/m4/macros/package_bugreport.m4 +index 8e1688d9..d2d08412 100644 +--- a/m4/macros/package_bugreport.m4 ++++ b/m4/macros/package_bugreport.m4 +@@ -3,6 +3,6 @@ dnl Bugreport name + AC_DEFUN([AMU_PACKAGE_BUGREPORT], + [AC_MSG_CHECKING(bug-reporting address) + AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$1") +-AC_MSG_RESULT(\"$1\") ++AC_MSG_RESULT("$1") + ]) + dnl ====================================================================== +diff --git a/m4/macros/package_name.m4 b/m4/macros/package_name.m4 +index 27f5711b..c2b3e013 100644 +--- a/m4/macros/package_name.m4 ++++ b/m4/macros/package_name.m4 +@@ -3,6 +3,6 @@ dnl Package name + AC_DEFUN([AMU_PACKAGE_NAME], + [AC_MSG_CHECKING(package name) + AC_DEFINE_UNQUOTED(PACKAGE_NAME, "$1") +-AC_MSG_RESULT(\"$1\") ++AC_MSG_RESULT("$1") + ]) + dnl ====================================================================== +diff --git a/m4/macros/package_version.m4 b/m4/macros/package_version.m4 +index 0d6c6ef2..2ddd4ade 100644 +--- a/m4/macros/package_version.m4 ++++ b/m4/macros/package_version.m4 +@@ -3,6 +3,6 @@ dnl Version of package + AC_DEFUN([AMU_PACKAGE_VERSION], + [AC_MSG_CHECKING(version of package) + AC_DEFINE_UNQUOTED(PACKAGE_VERSION, "$1") +-AC_MSG_RESULT(\"$1\") ++AC_MSG_RESULT("$1") + ]) + dnl ====================================================================== +diff --git a/m4/macros/with_addon.m4 b/m4/macros/with_addon.m4 +index b061621c..d8ea8cfa 100644 +--- a/m4/macros/with_addon.m4 ++++ b/m4/macros/with_addon.m4 +@@ -12,7 +12,7 @@ if test "$withval" = "yes"; then + elif test "$withval" = "no"; then + with_$1=no + else +- AC_MSG_ERROR(please use \"yes\" or \"no\" with --with-$1) ++ AC_MSG_ERROR(please use "yes" or "no" with --with-$1) + fi + ],[ + with_$1=yes diff --git a/am-utils-6.2-update-configure_ac.patch b/am-utils-6.2-update-configure_ac.patch new file mode 100644 index 0000000..8fd5935 --- /dev/null +++ b/am-utils-6.2-update-configure_ac.patch @@ -0,0 +1,84 @@ +am-utils-6.2 - update configure.ac + +From: Ian Kent + +Make some changes to configure.ac suggested by autoupdate from autoconf +2.71. + +Also move AC_USE_SYSTEM_EXTENSIONS and AC_SEARCH_LIBS([strerror],[cposix]) +further up to elliminate some warnings. + +Signed-off-by: Ian Kent +--- + configure.ac | 18 +++++++----------- + 1 file changed, 7 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index e1bc3290..ef4dab0e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -12,9 +12,7 @@ dnl ###################################################################### + dnl INITIALIZATION + dnl AC_INIT + dnl new init style: PACKAGE, VERSION, BUG-REPORTING-ADDRESS +-AC_INIT([am-utils], +- sinclude([vers.m4]), +- [https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) ++AC_INIT([am-utils],sinclude([vers.m4]),[https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) + AC_MSG_NOTICE(*** INITIALIZATION ***) + AC_CONFIG_SRCDIR([amd/amd.c]) + AC_CONFIG_MACRO_DIR([m4]) +@@ -55,7 +53,7 @@ AH_BOTTOM([ + ]) + dnl + dnl AC_CONFIG_AUX_DIR(m4) +-AC_PREREQ(2.52) ++AC_PREREQ(2.69) + AC_REVISION($Revision: 1.134 $) + AC_COPYRIGHT([Copyright (c) 1997-2011 Erez Zadok]) + dnl find out system type +@@ -105,14 +103,14 @@ dnl ====================================================================== + dnl Particular Program Checks + AC_MSG_NOTICE(*** PARTICULAR PROGRAMS (part 1) ***) + dnl AC-PROG-LIBTOOL will run this, but we need this to squelch warnings +-dnl from autoconf about AMU_TRY_COMPILE running before AC_AIX/AC_ISC_POSIX ++dnl from autoconf about AMU_TRY_COMPILE running before AC_USE_SYSTEM_EXTENSIONS/AC_SEARCH_LIBS([strerror],[cposix]) ++AC_USE_SYSTEM_EXTENSIONS ++AC_SEARCH_LIBS([strerror],[cposix]) + AC_PROG_CC + AC_PROG_CPP + AC_PROG_CC_C_O + AC_PROG_GCC_TRADITIONAL + AC_PROG_MAKE_SET +-AC_ISC_POSIX +-AC_AIX + dnl XXX: available in autoconf-2.14 + dnl AC_PROG_CC_STDC + dnl ====================================================================== +@@ -148,7 +146,7 @@ dnl my version of prog_libtool will not build shared by default + dnl AM_PROG_LIBTOOL2 + dnl build static libraries by default + AC_DISABLE_SHARED +-dnl XXX: for autoconf-2.14: use AC_PROG_LIBTOOL, not AM_PROG_LIBTOOL ++dnl XXX: for autoconf-2.69: use LT_INIT, not AC_PROG_LIBTOOL + case ${host_os} in + # Temporarily undo renaming of "linux-gnu" to "linux", because + # libtool only looks for "linux-gnu". Sigh. +@@ -156,7 +154,7 @@ case ${host_os} in + esac + dnl this line must appear only once and on its own line + dnl (hence the double case statements above and below) +-AC_PROG_LIBTOOL ++LT_INIT + case ${host_os} in + # end temporary renaming of "linux-gnu" to "linux" + linux-gnu ) host_os=linux ;; +@@ -175,8 +173,6 @@ dnl ###################################################################### + dnl Some of these macros must be called before any call to the C compiler + AC_MSG_NOTICE(*** UNIX VARIANTS ***) + dnl UNIX VARIANTS +-dnl AC_AIX +-dnl AC_ISC_POSIX + AMU_LINUX_HEADERS + dnl ====================================================================== + diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch index f1fa47b..8b20351 100644 --- a/am-utils-6.2-use-linux-libtirpc-if-present.patch +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -10,8 +10,8 @@ Signed-off-by: Ian Kent Makefile.am | 3 ++- configure.ac | 4 ++++ include/am_compat.h | 8 ++++++-- - m4/macros/check_linux_libtirpc.m4 | 14 ++++++++++++++ - 4 files changed, 26 insertions(+), 3 deletions(-) + m4/macros/check_linux_libtirpc.m4 | 15 +++++++++++++++ + 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 m4/macros/check_linux_libtirpc.m4 diff --git a/Makefile.am b/Makefile.am @@ -74,10 +74,10 @@ index 3463f3fa..d6826fc7 100644 #ifndef INADDR_NONE diff --git a/m4/macros/check_linux_libtirpc.m4 b/m4/macros/check_linux_libtirpc.m4 new file mode 100644 -index 00000000..0abd1ad3 +index 00000000..7b40e45c --- /dev/null +++ b/m4/macros/check_linux_libtirpc.m4 -@@ -0,0 +1,14 @@ +@@ -0,0 +1,15 @@ +dnl ###################################################################### +dnl Check for Linux libtirpc library +AC_DEFUN([AMU_CHECK_LIBTIRPC],[ @@ -92,3 +92,4 @@ index 00000000..0abd1ad3 + AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) + fi +]) ++dnl ====================================================================== diff --git a/am-utils.spec b/am-utils.spec index 7add392..c323f27 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 44%{?dist} +Release: 45%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -85,6 +85,15 @@ Patch34: am-utils-6.2-fix-umount-to-mount-race.patch Patch35: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch +Patch36: am-utils-6.2-fix-double-quote-escaping.patch +Patch37: am-utils-6.2-convert-AM_CONFIG_HEADER-to-AC_CONFIG_HEADERS.patch +Patch38: am-utils-6.2-convert-AC_HELP_STRING-to-AS_HELP_STRING.patch +Patch39: am-utils-6.2-convert-AC_TRY_COMPILE-to-AC_COMPILE_IFELSE.patch +Patch40: am-utils-6.2-convert-AC_TRY_LINK-to-AC_LINK_IFELSE.patch +Patch41: am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch +Patch42: am-utils-6.2-update-configure_ac.patch +Patch43: am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -94,6 +103,10 @@ Patch35: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch %define _use_internal_dependency_generator 0 %define old_find_requires %{__find_requires} +# The sed munging of configure by _fix_broken_configure_for_lto +# causes a check failure so opt-out. +%global _lto_cflags %nil + %description Am-utils includes an updated version of Amd, the popular BSD automounter. An automounter is a program which maintains a cache @@ -143,6 +156,14 @@ mounting and unmounting filesystems. %patch33 -p1 %patch34 -p1 %patch35 -p1 +%patch36 -p1 +%patch37 -p1 +%patch38 -p1 +%patch39 -p1 +%patch40 -p1 +%patch41 -p1 +%patch42 -p1 +%patch43 -p1 ./bootstrap @@ -246,6 +267,16 @@ fi %{_libdir}/libamu.so* %changelog +* Sat Aug 28 2021 Ian Kent - 5:6.2.0-45 +- fix autoconf double quote escaping. +- convert autoconf AM_CONFIG_HEADER to AC_CONFIG_HEADERS. +- convert autoconf AC_HELP_STRING to AS_HELP_STRING. +- convert autoconf AC_TRY_COMPILE to AC_COMPILE_IFELSE. +- convert autoconf AC_TRY_LINK to AC_LINK_IFELSE. +- convert autoconf AC_TRY_RUN to AC_RUN_IFELSE. +- update autoconf configure.ac. +- dont prevent building with autoconf 2.71. + * Wed Jul 21 2021 Fedora Release Engineering - 5:6.2.0-44 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 71ca6f41bb03550334f56f499f8582df47a88580 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jan 2022 21:10:36 +0000 Subject: [PATCH 136/157] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index c323f27..578d2a0 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 45%{?dist} +Release: 46%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -267,6 +267,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jan 19 2022 Fedora Release Engineering - 5:6.2.0-46 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Sat Aug 28 2021 Ian Kent - 5:6.2.0-45 - fix autoconf double quote escaping. - convert autoconf AM_CONFIG_HEADER to AC_CONFIG_HEADERS. From 3753a269b8a60f92bc24dffbeb2886c04eb871ec Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 20 Jul 2022 20:42:23 +0000 Subject: [PATCH 137/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 578d2a0..e14b6e4 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 46%{?dist} +Release: 47%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -267,6 +267,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 20 2022 Fedora Release Engineering - 5:6.2.0-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Wed Jan 19 2022 Fedora Release Engineering - 5:6.2.0-46 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From fa9b2f2bb85a63a94fc882f22924864c18432492 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Thu, 4 Aug 2022 09:09:27 +0800 Subject: [PATCH 138/157] - fix bug 2113103 - am-utils: FTBFS in Fedora rawhide/f37 --- ...ls-6.2-fix-SEGV-on-quick-reply-error.patch | 33 ++ ...tils-6.2-fix-fsmount-naming-conflict.patch | 307 ++++++++++++++++++ ...td-version-used-when-mount-is-nfs-v4.patch | 29 ++ am-utils.conf | 4 + am-utils.spec | 16 +- 5 files changed, 388 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-fix-SEGV-on-quick-reply-error.patch create mode 100644 am-utils-6.2-fix-fsmount-naming-conflict.patch create mode 100644 am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch diff --git a/am-utils-6.2-fix-SEGV-on-quick-reply-error.patch b/am-utils-6.2-fix-SEGV-on-quick-reply-error.patch new file mode 100644 index 0000000..3d7c268 --- /dev/null +++ b/am-utils-6.2-fix-SEGV-on-quick-reply-error.patch @@ -0,0 +1,33 @@ +am-utils-6.2 - fix SEGV on quick reply error + +From: Ian Kent + +Clearly a programming mistake on my part, odd it hasn't been seen +before ... + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index b88a40c8..c0ca0e42 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1293,6 +1293,8 @@ nfs_quick_reply3(am_node *mp, int error) + am_post_op_attr *post_op_obj; + int ret; + ++ post_op_dir = &result.res_u.ok.dir_attributes; ++ + if (error) { + /* + * Return the error that was passed to us. +@@ -1300,7 +1302,6 @@ nfs_quick_reply3(am_node *mp, int error) + post_op_dir->attributes_follow = 0; + result.status = nfs_error(error); + } else { +- post_op_dir = &result.res_u.ok.dir_attributes; + post_op_obj = &result.res_u.ok.obj_attributes; + am_fattr3 *fattr3; + nfsfattr *fattr; diff --git a/am-utils-6.2-fix-fsmount-naming-conflict.patch b/am-utils-6.2-fix-fsmount-naming-conflict.patch new file mode 100644 index 0000000..30de666 --- /dev/null +++ b/am-utils-6.2-fix-fsmount-naming-conflict.patch @@ -0,0 +1,307 @@ +am-utils-6.2 - fix fsmount naming conflict + +From: Ian Kent + +The mount API's new fsmount() system call conflicts with am-utils +struct fsmount so rename it and realted program variables from +fsmount to fs_mount. + +Signed-off-by: Ian Kent +--- + fsinfo/fsi_analyze.c | 14 +++++++------- + fsinfo/fsi_data.h | 6 +++--- + fsinfo/fsi_gram.y | 16 ++++++++-------- + fsinfo/fsi_util.c | 10 +++++----- + fsinfo/fsinfo.h | 4 ++-- + fsinfo/wr_bparam.c | 2 +- + fsinfo/wr_fstab.c | 26 +++++++++++++------------- + 7 files changed, 39 insertions(+), 39 deletions(-) + +diff --git a/fsinfo/fsi_analyze.c b/fsinfo/fsi_analyze.c +index 78598b85..0b92cfd7 100644 +--- a/fsinfo/fsi_analyze.c ++++ b/fsinfo/fsi_analyze.c +@@ -404,7 +404,7 @@ fixup_required_disk_info(disk_fs *dp) + + + static void +-fixup_required_mount_info(fsmount *fp, dict_ent *de) ++fixup_required_mount_info(fs_mount *fp, dict_ent *de) + { + if (!ISSET(fp->f_mask, FM_FROM)) { + if (de->de_count != 1) { +@@ -417,24 +417,24 @@ fixup_required_mount_info(fsmount *fp, dict_ent *de) + if (!mp) + abort(); + fp->f_ref = mp; +- set_fsmount(fp, FM_FROM, mp->m_dk->d_host->h_hostname); ++ set_fs_mount(fp, FM_FROM, mp->m_dk->d_host->h_hostname); + fsi_log("set: %s comes from %s", fp->f_volname, fp->f_from); + } + } + + if (!ISSET(fp->f_mask, FM_FSTYPE)) { +- set_fsmount(fp, FM_FSTYPE, xstrdup("nfs")); ++ set_fs_mount(fp, FM_FSTYPE, xstrdup("nfs")); + fsi_log("set: fstype is %s", fp->f_fstype); + } + + if (!ISSET(fp->f_mask, FM_OPTS)) { +- set_fsmount(fp, FM_OPTS, xstrdup("rw,nosuid,grpid,defaults")); ++ set_fs_mount(fp, FM_OPTS, xstrdup("rw,nosuid,grpid,defaults")); + fsi_log("set: opts are %s", fp->f_opts); + } + + if (!ISSET(fp->f_mask, FM_LOCALNAME)) { + if (fp->f_ref) { +- set_fsmount(fp, FM_LOCALNAME, xstrdup(fp->f_volname)); ++ set_fs_mount(fp, FM_LOCALNAME, xstrdup(fp->f_volname)); + fsi_log("set: localname is %s", fp->f_localname); + } else { + lerror(fp->f_ioloc, "cannot determine localname since volname %s is not uniquely defined", fp->f_volname); +@@ -476,10 +476,10 @@ static void + analyze_mounts(host *hp) + { + qelem *q = hp->h_mount; +- fsmount *fp; ++ fs_mount *fp; + int netbootp = 0; + +- ITER(fp, fsmount, q) { ++ ITER(fp, fs_mount, q) { + char *p; + char *nn = xstrdup(fp->f_volname); + int req; +diff --git a/fsinfo/fsi_data.h b/fsinfo/fsi_data.h +index 4cc341d8..3a190626 100644 +--- a/fsinfo/fsi_data.h ++++ b/fsinfo/fsi_data.h +@@ -47,7 +47,7 @@ typedef struct dict_data dict_data; + typedef struct dict_ent dict_ent; + typedef struct disk_fs disk_fs; + typedef struct ether_if ether_if; +-typedef struct fsmount fsmount; ++typedef struct fs_mount fs_mount; + typedef struct host host; + typedef struct ioloc ioloc; + typedef struct fsi_mount fsi_mount; +@@ -85,7 +85,7 @@ struct host { + qelem q; + int h_mask; + ioloc *h_ioloc; +- fsmount *h_netroot, *h_netswap; ++ fs_mount *h_netroot, *h_netswap; + #define HF_HOST 0 + char *h_hostname; /* The full name of the host */ + char *h_lochost; /* The name of the host with local domains stripped */ +@@ -181,7 +181,7 @@ struct fsi_mount { + * disk_fs_strings in analyze.c will + * need updating. + */ +-struct fsmount { ++struct fs_mount { + qelem f_q; + fsi_mount *f_ref; + ioloc *f_ioloc; +diff --git a/fsinfo/fsi_gram.y b/fsinfo/fsi_gram.y +index 85d19aa5..17d32401 100644 +--- a/fsinfo/fsi_gram.y ++++ b/fsinfo/fsi_gram.y +@@ -56,7 +56,7 @@ extern qelem *list_of_hosts, *list_of_automounts; + qelem *q; + char *s; + fsi_mount *m; +- fsmount *f; ++ fs_mount *f; + } + + %token tARCH +@@ -372,7 +372,7 @@ list_of_mounts : + { $$ = 0; } + + | list_of_mounts tMOUNT tSTR localinfo_list +- { set_fsmount($4, FM_VOLNAME, $3); ++ { set_fs_mount($4, FM_VOLNAME, $3); + if ($1) + $$ = $1; + else +@@ -392,22 +392,22 @@ list_of_mounts : + */ + localinfo_list : + /* empty */ +- { $$ = new_fsmount(); } ++ { $$ = new_fs_mount(); } + + | localinfo_list tDIRECT +- { $$ = $1; set_fsmount($$, FM_DIRECT, ""); } ++ { $$ = $1; set_fs_mount($$, FM_DIRECT, ""); } + + | localinfo_list tAS tSTR +- { $$ = $1; set_fsmount($$, FM_LOCALNAME, $3); } ++ { $$ = $1; set_fs_mount($$, FM_LOCALNAME, $3); } + + | localinfo_list tFROM tSTR +- { $$ = $1; set_fsmount($$, FM_FROM, $3); } ++ { $$ = $1; set_fs_mount($$, FM_FROM, $3); } + + | localinfo_list tFSTYPE tSTR +- { $$ = $1; set_fsmount($$, FM_FSTYPE, $3); } ++ { $$ = $1; set_fs_mount($$, FM_FSTYPE, $3); } + + | localinfo_list tOPTS tSTR +- { $$ = $1; set_fsmount($$, FM_OPTS, $3); } ++ { $$ = $1; set_fs_mount($$, FM_OPTS, $3); } + + | localinfo_list error '=' tSTR + { yyerror("unknown mount attribute"); } +diff --git a/fsinfo/fsi_util.c b/fsinfo/fsi_util.c +index f8ff313c..d53ff0df 100644 +--- a/fsinfo/fsi_util.c ++++ b/fsinfo/fsi_util.c +@@ -581,7 +581,7 @@ new_mount(void) + + + void +-set_fsmount(fsmount *fp, int k, char *v) ++set_fs_mount(fs_mount *fp, int k, char *v) + { + int m = 1 << k; + +@@ -623,13 +623,13 @@ set_fsmount(fsmount *fp, int k, char *v) + } + + +-fsmount * +-new_fsmount(void) ++fs_mount * ++new_fs_mount(void) + { +- fsmount *fp = CALLOC(struct fsmount); ++ fs_mount *fp = CALLOC(struct fs_mount); + + fp->f_ioloc = current_location(); +- show_new("fsmount"); ++ show_new("fs_mount"); + return fp; + } + +diff --git a/fsinfo/fsinfo.h b/fsinfo/fsinfo.h +index 7a871631..896f8bec 100644 +--- a/fsinfo/fsinfo.h ++++ b/fsinfo/fsinfo.h +@@ -63,7 +63,7 @@ extern dict *new_dict(void); + extern dict_ent *dict_locate(dict *, char *); + extern disk_fs *new_disk_fs(void); + extern ether_if *new_ether_if(void); +-extern fsmount *new_fsmount(void); ++extern fs_mount *new_fs_mount(void); + extern host *new_host(void); + extern int dict_iter(dict *, int (*)(qelem *)); + extern int errors; +@@ -94,7 +94,7 @@ extern void lwarning(ioloc *l, char *fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); + extern void rem_que(qelem *); + extern void set_disk_fs(disk_fs *, int, char *); +-extern void set_fsmount(fsmount *, int, char *); ++extern void set_fs_mount(fs_mount *, int, char *); + extern void set_mount(fsi_mount *, int, char *); + extern void show_area_being_processed(char *area, int n); + extern void show_new(char *msg); +diff --git a/fsinfo/wr_bparam.c b/fsinfo/wr_bparam.c +index 00befa9c..b318d5d3 100644 +--- a/fsinfo/wr_bparam.c ++++ b/fsinfo/wr_bparam.c +@@ -49,7 +49,7 @@ + * Write a host/path in NFS format + */ + static int +-write_nfsname(FILE *ef, fsmount *fp, char *hn) ++write_nfsname(FILE *ef, fs_mount *fp, char *hn) + { + int errors = 0; + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); +diff --git a/fsinfo/wr_fstab.c b/fsinfo/wr_fstab.c +index 166353eb..4daf161d 100644 +--- a/fsinfo/wr_fstab.c ++++ b/fsinfo/wr_fstab.c +@@ -48,22 +48,22 @@ + + /* forward definitions */ + static void write_aix1_dkfstab(FILE *ef, disk_fs *dp); +-static void write_aix1_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_aix1_dkrmount(FILE *ef, char *hn, fs_mount *fp); + static void write_aix3_dkfstab(FILE *ef, disk_fs *dp); +-static void write_aix3_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_aix3_dkrmount(FILE *ef, char *hn, fs_mount *fp); + static int write_dkfstab(FILE *ef, qelem *q, void (*output) (FILE *, disk_fs *)); +-static int write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fsmount *)); ++static int write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fs_mount *)); + static void write_generic_dkfstab(FILE *ef, disk_fs *dp); +-static void write_generic_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_generic_dkrmount(FILE *ef, char *hn, fs_mount *fp); + static void write_ultrix_dkfstab(FILE *ef, disk_fs *dp); +-static void write_ultrix_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_ultrix_dkrmount(FILE *ef, char *hn, fs_mount *fp); + + /* ----------------------------------------------- */ + + static struct os_fstab_type { + char *os_name; + void (*op_fstab) (FILE *ef, disk_fs *dp); +- void (*op_mount) (FILE *ef, char *hn, fsmount *fp); ++ void (*op_mount) (FILE *ef, char *hn, fs_mount *fp); + } os_tabs[] = { + + { +@@ -117,7 +117,7 @@ write_aix1_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_aix1_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_aix1_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); + char *hp = xstrdup(h); +@@ -166,7 +166,7 @@ write_aix3_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_aix3_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_aix3_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); + +@@ -200,7 +200,7 @@ write_ultrix_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_ultrix_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_ultrix_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); + +@@ -234,7 +234,7 @@ write_generic_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_generic_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_generic_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h; + +@@ -291,12 +291,12 @@ write_dkfstab(FILE *ef, qelem *q, void (*output) (FILE *, disk_fs *)) + + + static int +-write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fsmount *)) ++write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fs_mount *)) + { + int errors = 0; +- fsmount *fp; ++ fs_mount *fp; + +- ITER(fp, fsmount, q) ++ ITER(fp, fs_mount, q) + (*output) (ef, hn, fp); + + return errors; diff --git a/am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch b/am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch new file mode 100644 index 0000000..7aafc46 --- /dev/null +++ b/am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch @@ -0,0 +1,29 @@ +am-utils-6.2 - fix mountd version used when mount is nfs v4 + +From: Ian Kent + +If we are trying to mount the exports of a type host map entry and the +mounts are NFS v4 make sure mountd version 3 is used in the same way it +is used for NFS v3 mounts. + +Signed-off-by: Ian Kent +--- + amd/amfs_host.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/amd/amfs_host.c b/amd/amfs_host.c +index a3468ecd..a363c5cc 100644 +--- a/amd/amfs_host.c ++++ b/amd/amfs_host.c +@@ -346,8 +346,9 @@ amfs_host_mount(am_node *am, mntfs *mf) + host = mf->mf_server->fs_host; + sin = *mf->mf_server->fs_ip; + plog(XLOG_INFO, "amfs_host_mount: NFS version %d", (int) mf->mf_server->fs_version); +-#ifdef HAVE_FS_NFS3 +- if (mf->mf_server->fs_version == NFS_VERSION3) ++#if defined(HAVE_FS_NFS3) || defined(HAVE_FS_NFS4) ++ if (mf->mf_server->fs_version == NFS_VERSION3 || ++ mf->mf_server->fs_version == NFS_VERSION4) + mnt_version = AM_MOUNTVERS3; + else + #endif /* HAVE_FS_NFS3 */ diff --git a/am-utils.conf b/am-utils.conf index 388e673..ef3d7cb 100644 --- a/am-utils.conf +++ b/am-utils.conf @@ -28,6 +28,10 @@ fully_qualified_hosts = no cache_duration = 300 # Fedora doesn't support NFSv2, use the amd NFSv3 server. auto_nfs_version = 3 +# The latest Fedora kernel builds disable UDP so unless a custom build +# is done the internal amd automount server must use the autofs protocol +# not the NFS protocol. +mount_type = autofs # DEFINE AN AMD MOUNT POINT [ /net ] diff --git a/am-utils.spec b/am-utils.spec index e14b6e4..51f260b 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 47%{?dist} +Release: 48%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -94,6 +94,10 @@ Patch41: am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch Patch42: am-utils-6.2-update-configure_ac.patch Patch43: am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch +Patch44: am-utils-6.2-fix-fsmount-naming-conflict.patch +Patch45: am-utils-6.2-fix-SEGV-on-quick-reply-error.patch +Patch46: am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -165,6 +169,10 @@ mounting and unmounting filesystems. %patch42 -p1 %patch43 -p1 +%patch44 -p1 +%patch45 -p1 +%patch46 -p1 + ./bootstrap find_requires=%{old_find_requires} @@ -267,6 +275,12 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Aug 04 2022 Ian Kent - 5:6.2.0-48 +- fix fsmount naming conflict. +- fix SEGV on quick reply error. +- fix mountd version used when mount is nfs v4. +- set mount_type = autofs in default installed configuration. + * Wed Jul 20 2022 Fedora Release Engineering - 5:6.2.0-47 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 9ba765bc8c208aeef962b035d033a12e18166e57 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 15 Aug 2022 11:08:08 +0800 Subject: [PATCH 139/157] - more fixes for bug 2113103 - am-utils: FTBFS in Fedora rawhide/f37 --- am-utils-6.2-dont-include-linux_mount_h.patch | 35 +++++ ...2-fix-linux-nfs-kernel-module-search.patch | 134 ++++++++++++++++++ am-utils.spec | 12 +- 3 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 am-utils-6.2-dont-include-linux_mount_h.patch create mode 100644 am-utils-6.2-fix-linux-nfs-kernel-module-search.patch diff --git a/am-utils-6.2-dont-include-linux_mount_h.patch b/am-utils-6.2-dont-include-linux_mount_h.patch new file mode 100644 index 0000000..2f8aaf5 --- /dev/null +++ b/am-utils-6.2-dont-include-linux_mount_h.patch @@ -0,0 +1,35 @@ +am-utils-6.2 - dont include linux/mount.h + +From: Ian Kent + +Updates to glibc to add support for fsconfig() et. al. have introduced +conflicts between sys/mount.h and the corresponding kernel header +linux/mount.h. + +But sys/mount.h and linux/mount.h provide very close to the same +definitions except that sys/mount.h has some additional function +declarations. + +So add a macro define to the amd include file to stop its inclusion +of linux/mount.h when including linux/fs.h so that sys/mount.h is +used instead. + +Signed-off-by: Ian Kent +--- + include/mount_headers1.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/include/mount_headers1.h b/include/mount_headers1.h +index 7d518a06..af9a90ee 100644 +--- a/include/mount_headers1.h ++++ b/include/mount_headers1.h +@@ -160,6 +160,9 @@ + # endif /* HAVE_LINUX_LIST_H */ + # include + # else ++# ifdef HAVE_SYS_MOUNT_H ++# define _LINUX_MOUNT_H ++# endif /* HAVE_SYS_MOUNT_H */ + # include + # endif/* (!__GLIBC__ || __GLIBC__ < 2) */ + #endif /* HAVE_LINUX_FS_H */ diff --git a/am-utils-6.2-fix-linux-nfs-kernel-module-search.patch b/am-utils-6.2-fix-linux-nfs-kernel-module-search.patch new file mode 100644 index 0000000..41c539c --- /dev/null +++ b/am-utils-6.2-fix-linux-nfs-kernel-module-search.patch @@ -0,0 +1,134 @@ +am-utils-6.2 - fix linux nfs kernel module search + +From: Ian Kent + +The configure macros AMU_CHECK_FS_MNTENT() and AMU_CHECK_MOUNT_TYPE() +haven't been updated for a log time. In particular kernel modules that +are xz compressed aren't considered. + +Also the containing subdirectory name isn't always the the same as +the module name and needs to be special cased. + +The cases I found have been fixed, there are probably more but this +is enough to get us started. + +Signed-off-by: Ian Kent +--- + amd/amfs_host.c | 1 + + configure.ac | 6 +++--- + m4/macros/check_fs_mntent.m4 | 17 +++++++++++++++-- + m4/macros/check_mount_type.m4 | 29 +++++++++++++++++++++++++---- + 4 files changed, 44 insertions(+), 9 deletions(-) + +diff --git a/amd/amfs_host.c b/amd/amfs_host.c +index a363c5cc..deaf69fa 100644 +--- a/amd/amfs_host.c ++++ b/amd/amfs_host.c +@@ -50,6 +50,7 @@ + #endif /* HAVE_CONFIG_H */ + #include + #include ++#include + + static char *amfs_host_match(am_opts *fo); + static int amfs_host_init(mntfs *mf); +diff --git a/configure.ac b/configure.ac +index ef4dab0e..408964d8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -808,8 +808,8 @@ dnl NFS related tests need to happen earlier: many things depend on them + AMU_STRUCT_FIELD_NFS_FH + AMU_STRUCT_NFS_FH + AMU_STRUCT_NFS_FH3 +-AMU_CHECK_FS_MNTENT(nfs3) +-AMU_CHECK_FS_MNTENT(nfs4) ++AMU_CHECK_FS_MNTENT(nfsv3 nfs3, nfs3) ++AMU_CHECK_FS_MNTENT(nfsv4 nfs4, nfs4) + dnl ====================================================================== + + dnl ----------------------------------------------------------------------- +@@ -1117,7 +1117,7 @@ dnl check for mount(2) type/name for filesystem (MNTTYPE_*, MOUNT_*) + AC_MSG_NOTICE(*** MOUNTING TYPES ***) + AMU_CHECK_MOUNT_TYPE(nfs) + AMU_CHECK_MOUNT_TYPE(nfs3) +-AMU_CHECK_MOUNT_TYPE(nfs4) ++AMU_CHECK_MOUNT_TYPE(nfsv4 nfs4, nfs4) + AMU_CHECK_MOUNT_TYPE(lustre) + AMU_CHECK_MOUNT_TYPE(ext4 ext3 ext2 ffs ufs 4.2 4.3 4.4 efs xfs jfs ultrix, ufs) + AMU_CHECK_MOUNT_TYPE(xfs) +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index e612b4ec..45ac4974 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -98,12 +98,25 @@ do + fi + + # look for a loadable filesystem module (linux 2.4+) +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.ko ++ ac_fs_subdir=$ac_fs_tmp ++ if test -n "$2" ++ then ++ if test "$ac_fs_tmp" = "nfsv3" -o "$ac_fs_tmp" = "nfsv4" ++ then ++ ac_fs_subdir="nfs" ++ fi ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko.xz ++ then ++ eval "ac_cv_fs_$ac_fs_name=yes" ++ break ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko + then + eval "ac_cv_fs_$ac_fs_name=yes" + break + fi +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.o ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.o + then + eval "ac_cv_fs_$ac_fs_name=yes" + break +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index c779e0bf..88f85323 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -104,14 +104,35 @@ do + fi + + # look for a loadable filesystem module (linux 2.4+) +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.ko ++ # special casing here assumes preferred option name will be ++ # first in the list. ++ ac_fs_option="$ac_fs_tmp" ++ ac_fs_subdir=$ac_fs_tmp ++ if test -n "$2" + then +- eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ if test "$ac_fs_tmp" = "nfsv3" -o "$ac_fs_tmp" = "nfsv4" ++ then ++ ac_fs_subdir="nfs" ++ ac_fs_option="$ac_fs_name" ++ fi ++ if test "$ac_fs_tmp" = "vfat" -o "$ac_fs_tmp" = "msdos" ++ then ++ ac_fs_subdir="fat" ++ fi ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko.xz ++ then ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_option\\\"" + break + fi +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.o ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko + then +- eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_option\\\"" ++ break ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.o ++ then ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_option\\\"" + break + fi + diff --git a/am-utils.spec b/am-utils.spec index 51f260b..047b35c 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 48%{?dist} +Release: 49%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -98,6 +98,9 @@ Patch44: am-utils-6.2-fix-fsmount-naming-conflict.patch Patch45: am-utils-6.2-fix-SEGV-on-quick-reply-error.patch Patch46: am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch +Patch47: am-utils-6.2-fix-linux-nfs-kernel-module-search.patch +Patch48: am-utils-6.2-dont-include-linux_mount_h.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -173,6 +176,9 @@ mounting and unmounting filesystems. %patch45 -p1 %patch46 -p1 +%patch47 -p1 +%patch48 -p1 + ./bootstrap find_requires=%{old_find_requires} @@ -275,6 +281,10 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Aug 15 2022 Ian Kent - 5:6.2.0-49 +- fix linux nfs kernel module search. +- dont include linux/mount.h. + * Thu Aug 04 2022 Ian Kent - 5:6.2.0-48 - fix fsmount naming conflict. - fix SEGV on quick reply error. From 901c8bab008c2eacff1ed9bb978b61d28aecd7cd Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 15 Aug 2022 13:50:30 +0800 Subject: [PATCH 140/157] - add BuildRequires: kernel-modules for s390x. --- am-utils.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 047b35c..9cee802 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 49%{?dist} +Release: 50%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -25,6 +25,12 @@ BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel +%ifarch s390x +# configure can't find kernel modules on s390x without this package. +# dracut fails of course but the modules are present for configure +# to use. +BuildRequires: kernel-modules +%endif BuildRequires: kernel-headers BuildRequires: libnsl2-devel BuildRequires: rpcsvc-proto-devel @@ -281,6 +287,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Aug 15 2022 Ian Kent - 5:6.2.0-50 +- add BuildRequires: kernel-modules for s390x. + * Mon Aug 15 2022 Ian Kent - 5:6.2.0-49 - fix linux nfs kernel module search. - dont include linux/mount.h. From 34382e964f08b1ef3a879f9c6ba6c796d7c37ec0 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 15 Aug 2022 14:20:46 +0800 Subject: [PATCH 141/157] - don't use ifarch macro. --- am-utils.spec | 2 -- 1 file changed, 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 9cee802..c6acac0 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -25,12 +25,10 @@ BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel -%ifarch s390x # configure can't find kernel modules on s390x without this package. # dracut fails of course but the modules are present for configure # to use. BuildRequires: kernel-modules -%endif BuildRequires: kernel-headers BuildRequires: libnsl2-devel BuildRequires: rpcsvc-proto-devel From e056269e13c5ccf779c0f109b66e898e440b938c Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Mon, 15 Aug 2022 17:19:54 +0800 Subject: [PATCH 142/157] - ensure NFSv4 is seen as supported on s390x build. --- am-utils-6.2-fix-fedora-mock-build-fail.patch | 82 +++++++++++++++++++ am-utils.spec | 12 +-- 2 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 am-utils-6.2-fix-fedora-mock-build-fail.patch diff --git a/am-utils-6.2-fix-fedora-mock-build-fail.patch b/am-utils-6.2-fix-fedora-mock-build-fail.patch new file mode 100644 index 0000000..7fb2b0c --- /dev/null +++ b/am-utils-6.2-fix-fedora-mock-build-fail.patch @@ -0,0 +1,82 @@ +am-utils-6.2 - fix fedora mock build fail + +From: Ian Kent + +NFSv4 really needs to be used here but fedora mock builds don't seem +to be able to see the kernel modules. And when NFSv4 is a module, and +has not been used yet, the test fails. + +So use the existing hack to ensure NFSv4 is seen as supported for both +check_fs_mntent.m4 and check_mount_type.m4 in m4/macros. + +Signed-off-by: Ian Kent +--- + m4/macros/check_fs_mntent.m4 | 23 +++++++++++++---------- + m4/macros/check_mount_type.m4 | 18 ++++++++++++++++++ + 2 files changed, 31 insertions(+), 10 deletions(-) + +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index 45ac4974..de3d9a91 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -141,18 +141,21 @@ do + break + fi + +- if test "$ac_fs_tmp" = "nfs3" -a "$ac_cv_header_linux_nfs_mount_h" = "yes" ++ if test $ac_fs_tmp = "nfs3" -o $ac_fs_tmp = "nfs4" + then +- # hack hack hack +- # in 6.1, which has fallback to v2/udp, we might want +- # to always use version 4. +- # in 6.0 we do not have much choice +- # +- let nfs_mount_version="`grep NFS_MOUNT_VERSION /usr/include/linux/nfs_mount.h | awk '{print $''3;}'`" +- if test $nfs_mount_version -ge 4 ++ if test "$ac_cv_header_linux_nfs_mount_h" = "yes" + then +- eval "ac_cv_fs_$ac_fs_name=yes" +- break ++ # hack hack hack ++ # in 6.1, which has fallback to v2/udp, we might want ++ # to always use version 4. ++ # in 6.0 we do not have much choice ++ # ++ let nfs_mount_version="`grep NFS_MOUNT_VERSION /usr/include/linux/nfs_mount.h | awk '{print $''3;}'`" ++ if test $nfs_mount_version -ge 4 ++ then ++ eval "ac_cv_fs_$ac_fs_name=yes" ++ break ++ fi + fi + fi + +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index 88f85323..69354221 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -155,6 +155,24 @@ do + break + fi + ++ if test $ac_fs_tmp = "nfs4" ++ then ++ if test "$ac_cv_header_linux_nfs_mount_h" = "yes" ++ then ++ # hack hack hack ++ # in 6.1, which has fallback to v2/udp, we might want ++ # to always use version 4. ++ # in 6.0 we do not have much choice ++ # ++ let nfs_mount_version="`grep NFS_MOUNT_VERSION /usr/include/linux/nfs_mount.h | awk '{print $''3;}'`" ++ if test $nfs_mount_version -ge 4 ++ then ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ break ++ fi ++ fi ++ fi ++ + # run a test program for bsdi3 + AC_RUN_IFELSE( + [AC_LANG_SOURCE( diff --git a/am-utils.spec b/am-utils.spec index c6acac0..fc6bf4a 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 50%{?dist} +Release: 51%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -25,10 +25,6 @@ BuildRequires: texinfo BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel -# configure can't find kernel modules on s390x without this package. -# dracut fails of course but the modules are present for configure -# to use. -BuildRequires: kernel-modules BuildRequires: kernel-headers BuildRequires: libnsl2-devel BuildRequires: rpcsvc-proto-devel @@ -104,6 +100,7 @@ Patch46: am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch Patch47: am-utils-6.2-fix-linux-nfs-kernel-module-search.patch Patch48: am-utils-6.2-dont-include-linux_mount_h.patch +Patch49: am-utils-6.2-fix-fedora-mock-build-fail.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -182,6 +179,7 @@ mounting and unmounting filesystems. %patch47 -p1 %patch48 -p1 +%patch49 -p1 ./bootstrap @@ -285,6 +283,10 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Aug 15 2022 Ian Kent - 5:6.2.0-50 +- remove BuildRequires: kernel-modules for s390x. +- add hack to ensure NFSv4 is seen as supported on s390x. + * Mon Aug 15 2022 Ian Kent - 5:6.2.0-50 - add BuildRequires: kernel-modules for s390x. From bb122e50151f5b6ee71649b3d2c94ee33f199a90 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 18 Jan 2023 21:39:12 +0000 Subject: [PATCH 143/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index fc6bf4a..f3a87e9 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 51%{?dist} +Release: 52%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -283,6 +283,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jan 18 2023 Fedora Release Engineering - 5:6.2.0-52 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Mon Aug 15 2022 Ian Kent - 5:6.2.0-50 - remove BuildRequires: kernel-modules for s390x. - add hack to ensure NFSv4 is seen as supported on s390x. From 56ba80bf838e65d4912e358aa11ae2c44a2b6760 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 16 Feb 2023 11:15:41 +0100 Subject: [PATCH 144/157] Port configure script to C99 (#2170414) Related to: --- am-utils-configure-c99.patch | 214 +++++++++++++++++++++++++++++++++++ am-utils.spec | 7 +- 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 am-utils-configure-c99.patch diff --git a/am-utils-configure-c99.patch b/am-utils-configure-c99.patch new file mode 100644 index 0000000..f4f1a83 --- /dev/null +++ b/am-utils-configure-c99.patch @@ -0,0 +1,214 @@ +Fix various autoconf helper macros not to require support for implicit +ints and implicit function declarations in the compiler. These C +language features have been removed from C99, and future compilers +will not accept them by default. + +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index de3d9a918283bb1d..7800d3eff0f59e71 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -165,15 +165,15 @@ do + [[ + #include + #include +-main() ++int main(void) + { + int i; + struct vfsconf vf; + i = getvfsbyname("$ac_fs_tmp", &vf); + if (i < 0) +- exit(1); ++ return 1; + else +- exit(0); ++ return 0; + } + ]])], [eval "ac_cv_fs_$ac_fs_name=yes" + break +diff --git a/m4/macros/check_gnu_getopt.m4 b/m4/macros/check_gnu_getopt.m4 +index 6ac6440c47e8edd8..daa61cbaef3b09e9 100644 +--- a/m4/macros/check_gnu_getopt.m4 ++++ b/m4/macros/check_gnu_getopt.m4 +@@ -17,7 +17,7 @@ int main() + int isGNU = 0; + + rf = fopen("conftestresult", "w"); +- if (rf == NULL) exit(1); ++ if (rf == NULL) return 1; + + while ( (c = getopt(argc, argv, "x")) != -1 ) { + switch ( c ) { +@@ -25,11 +25,11 @@ int main() + isGNU=1; + break; + default: +- exit(1); ++ return 1; + } + } + fprintf(rf, isGNU ? "yes" : "no"); +- exit(0); ++ return 0; + } + ]])],[ + ac_cv_sys_gnu_getopt="`cat conftestresult`" +diff --git a/m4/macros/check_mnttab_type.m4 b/m4/macros/check_mnttab_type.m4 +index a840991e95e3ba81..398314910d80337a 100644 +--- a/m4/macros/check_mnttab_type.m4 ++++ b/m4/macros/check_mnttab_type.m4 +@@ -121,15 +121,15 @@ do + [[ + #include + #include +-main() ++int main(void) + { + int i; + struct vfsconf vf; + i = getvfsbyname("$ac_fs_tmp", &vf); + if (i < 0) +- exit(1); ++ return 1; + else +- exit(0); ++ return 0; + } + ]])], [eval "ac_cv_mnttab_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" + break +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index 693542219f7aee90..1b0de6ccb0b7cafd 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -179,15 +179,15 @@ do + [[ + #include + #include +-main() ++int main(void) + { + int i; + struct vfsconf vf; + i = getvfsbyname("$ac_fs_tmp", &vf); + if (i < 0) +- exit(1); ++ return 1; + else +- exit(0); ++ return 0; + } + ]])], [eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" + break +diff --git a/m4/macros/check_varargs_macros.m4 b/m4/macros/check_varargs_macros.m4 +index 93c26ffced82fdcc..1dbd4fb59e3d1c88 100644 +--- a/m4/macros/check_varargs_macros.m4 ++++ b/m4/macros/check_varargs_macros.m4 +@@ -9,6 +9,7 @@ ac_cv_varargs_macros, + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ ++void bar(const char *, ...); + #define foo(str,size,fmt,...) bar(__FILE__,__LINE__,(str),(size),(fmt),__VA_ARGS__) + ]], + [[ +@@ -20,6 +21,7 @@ foo(a, sizeof(a), "%d,%d", 1, 2); + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ ++void bar(const char *, ...); + #define foo(str,size,args...) bar(__FILE__,__LINE__,(str),(size),(fmt),args) + ]], + [[ +diff --git a/m4/macros/expand_cpp_hex.m4 b/m4/macros/expand_cpp_hex.m4 +index 13c7c832b0d764fb..7b915d0431b8f688 100644 +--- a/m4/macros/expand_cpp_hex.m4 ++++ b/m4/macros/expand_cpp_hex.m4 +@@ -14,17 +14,16 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + [$1] +-main(argc) +-int argc; ++int main(int argc) + { + #ifdef $2 + if (argc > 1) + printf("0x%x", $2); +-exit(0); ++return 0; + #else + # error no such option $2 + #endif +-exit(1); ++return 1; + }]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" +diff --git a/m4/macros/expand_cpp_int.m4 b/m4/macros/expand_cpp_int.m4 +index e58649e83013265e..798e7fd7590f4ca7 100644 +--- a/m4/macros/expand_cpp_int.m4 ++++ b/m4/macros/expand_cpp_int.m4 +@@ -16,17 +16,16 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + [$1] +-main(argc) +-int argc; ++int main(int argc) + { + #ifdef $2 + if (argc > 1) + printf("%d", $2); +-exit(0); ++return 0; + #else + # error no such option $2 + #endif +-exit(1); ++return 1; + }]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" +diff --git a/m4/macros/expand_cpp_string.m4 b/m4/macros/expand_cpp_string.m4 +index e014b7e4fc9d8030..256ddee09303fde4 100644 +--- a/m4/macros/expand_cpp_string.m4 ++++ b/m4/macros/expand_cpp_string.m4 +@@ -14,17 +14,16 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + [$1] +-main(argc) +-int argc; ++int main(int argc) + { + #ifdef $2 + if (argc > 1) + printf("%s", $2); +-exit(0); ++return 0; + #else + # error no such option $2 + #endif +-exit(1); ++return 1; + }]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" +diff --git a/m4/macros/expand_run_string.m4 b/m4/macros/expand_run_string.m4 +index f9390020aa934c3e..c8c350f533f80a82 100644 +--- a/m4/macros/expand_run_string.m4 ++++ b/m4/macros/expand_run_string.m4 +@@ -8,11 +8,10 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + $1 +-main(argc) +-int argc; ++int main(int argc) + { + $2 +-exit(0); ++return 0; + }]])], + [ + value=`./conftest dummy 2>>config.log` diff --git a/am-utils.spec b/am-utils.spec index f3a87e9..8ddcc99 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 52%{?dist} +Release: 53%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -101,6 +101,7 @@ Patch46: am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch Patch47: am-utils-6.2-fix-linux-nfs-kernel-module-search.patch Patch48: am-utils-6.2-dont-include-linux_mount_h.patch Patch49: am-utils-6.2-fix-fedora-mock-build-fail.patch +Patch50: am-utils-configure-c99.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -180,6 +181,7 @@ mounting and unmounting filesystems. %patch47 -p1 %patch48 -p1 %patch49 -p1 +%patch50 -p1 ./bootstrap @@ -283,6 +285,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Feb 16 2023 Florian Weimer - 5:6.2.0-53 +- Port configure script to C99 (#2170414) + * Wed Jan 18 2023 Fedora Release Engineering - 5:6.2.0-52 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 3c402764ffa0dff54e5ef46a740a3902fdb244cb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 13:11:15 +0000 Subject: [PATCH 145/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 8ddcc99..f7f78c7 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 53%{?dist} +Release: 54%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -285,6 +285,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 5:6.2.0-54 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Thu Feb 16 2023 Florian Weimer - 5:6.2.0-53 - Port configure script to C99 (#2170414) From 8518c2c5ccbdd558a958dbf1d9ce35737dcf962f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 12:48:00 +0000 Subject: [PATCH 146/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index f7f78c7..4712f9a 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 54%{?dist} +Release: 55%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -285,6 +285,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 5:6.2.0-55 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Wed Jul 19 2023 Fedora Release Engineering - 5:6.2.0-54 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From bb254c6afeae626f06c40c1fe27894d19f6303da Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 22 Jan 2024 22:57:49 +0000 Subject: [PATCH 147/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 4712f9a..69bc7f5 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 55%{?dist} +Release: 56%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -285,6 +285,9 @@ fi %{_libdir}/libamu.so* %changelog +* Mon Jan 22 2024 Fedora Release Engineering - 5:6.2.0-56 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 5:6.2.0-55 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From a2a99550179ca2267e1dab02b040e076fe0b0f27 Mon Sep 17 00:00:00 2001 From: Software Management Team Date: Thu, 30 May 2024 12:46:46 +0200 Subject: [PATCH 148/157] Eliminate use of obsolete %patchN syntax (#2283636) --- am-utils.spec | 100 +++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 69bc7f5..220bda5 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -130,58 +130,58 @@ mounting and unmounting filesystems. %prep %setup -q -n %{name}-%{upstream_version} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%patch -P5 -p1 +%patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 +%patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 +%patch -P14 -p1 +%patch -P15 -p1 +%patch -P16 -p1 +%patch -P17 -p1 +%patch -P18 -p1 +%patch -P19 -p1 +%patch -P20 -p1 +%patch -P21 -p1 +%patch -P22 -p1 +%patch -P23 -p1 +%patch -P24 -p1 +%patch -P25 -p1 +%patch -P26 -p1 +%patch -P27 -p1 +%patch -P28 -p1 +%patch -P29 -p1 +%patch -P30 -p1 +%patch -P31 -p1 +%patch -P32 -p1 +%patch -P33 -p1 +%patch -P34 -p1 +%patch -P35 -p1 +%patch -P36 -p1 +%patch -P37 -p1 +%patch -P38 -p1 +%patch -P39 -p1 +%patch -P40 -p1 +%patch -P41 -p1 +%patch -P42 -p1 +%patch -P43 -p1 -%patch44 -p1 -%patch45 -p1 -%patch46 -p1 +%patch -P44 -p1 +%patch -P45 -p1 +%patch -P46 -p1 -%patch47 -p1 -%patch48 -p1 -%patch49 -p1 -%patch50 -p1 +%patch -P47 -p1 +%patch -P48 -p1 +%patch -P49 -p1 +%patch -P50 -p1 ./bootstrap From e176b0ba741ae49f2a2a19ad4e76254933e3b0f6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 16:54:21 +0000 Subject: [PATCH 149/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 220bda5..8727d7e 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 56%{?dist} +Release: 57%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -285,6 +285,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 5:6.2.0-57 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Mon Jan 22 2024 Fedora Release Engineering - 5:6.2.0-56 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From d69d00c1957bb3e72dfe43643c26d5065482aebb Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 30 Jul 2024 11:27:45 +0800 Subject: [PATCH 150/157] - fix Fedora 41 build. --- am-utils-6.2-allow-autoconf-2.72.patch | 28 ++++++ am-utils.spec | 114 +++++++++++++------------ 2 files changed, 89 insertions(+), 53 deletions(-) create mode 100644 am-utils-6.2-allow-autoconf-2.72.patch diff --git a/am-utils-6.2-allow-autoconf-2.72.patch b/am-utils-6.2-allow-autoconf-2.72.patch new file mode 100644 index 0000000..ff2d70d --- /dev/null +++ b/am-utils-6.2-allow-autoconf-2.72.patch @@ -0,0 +1,28 @@ +am-utils-6.2 - allow autoconf 2.72 + +From: Ian Kent + +am-utils creates configure at build time and requires versions of autoconf +that are known to work ok. + +Allow autoconf version 2.72 to get a build. + +Signed-off-by: Ian Kent +--- + bootstrap | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bootstrap b/bootstrap +index d454c63..55b2084 100755 +--- a/bootstrap ++++ b/bootstrap +@@ -10,7 +10,8 @@ validateversion() { + case "$v" in + *2.69) ;; + *2.71) ;; +- *) echo "am-utils requires autoconf 2.69 or 2.71, you have:" ++ *2.72) ;; ++ *) echo "am-utils requires autoconf 2.69, 2.71 or 2.72, you have:" + echo " $v" + exit 1;; + esac diff --git a/am-utils.spec b/am-utils.spec index 8727d7e..3d80a7b 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 57%{?dist} +Release: 58%{?dist} License: BSD Epoch: 5 URL: http://am-utils.org @@ -26,7 +26,7 @@ BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel BuildRequires: kernel-headers -BuildRequires: libnsl2-devel +#BuildRequires: libnsl2-devel BuildRequires: rpcsvc-proto-devel BuildRequires: make @@ -35,7 +35,7 @@ Requires: grep Requires: gawk Requires: findutils Requires: libtirpc -Requires: libnsl2 +#Requires: libnsl2 Requires(pre): /usr/bin/grep Requires(post): systemd-sysv @@ -103,6 +103,8 @@ Patch48: am-utils-6.2-dont-include-linux_mount_h.patch Patch49: am-utils-6.2-fix-fedora-mock-build-fail.patch Patch50: am-utils-configure-c99.patch +Patch51: am-utils-6.2-allow-autoconf-2.72.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -130,58 +132,60 @@ mounting and unmounting filesystems. %prep %setup -q -n %{name}-%{upstream_version} -%patch -P1 -p1 -%patch -P2 -p1 -%patch -P3 -p1 -%patch -P4 -p1 -%patch -P5 -p1 -%patch -P6 -p1 -%patch -P7 -p1 -%patch -P8 -p1 -%patch -P9 -p1 -%patch -P10 -p1 -%patch -P11 -p1 -%patch -P12 -p1 -%patch -P13 -p1 -%patch -P14 -p1 -%patch -P15 -p1 -%patch -P16 -p1 -%patch -P17 -p1 -%patch -P18 -p1 -%patch -P19 -p1 -%patch -P20 -p1 -%patch -P21 -p1 -%patch -P22 -p1 -%patch -P23 -p1 -%patch -P24 -p1 -%patch -P25 -p1 -%patch -P26 -p1 -%patch -P27 -p1 -%patch -P28 -p1 -%patch -P29 -p1 -%patch -P30 -p1 -%patch -P31 -p1 -%patch -P32 -p1 -%patch -P33 -p1 -%patch -P34 -p1 -%patch -P35 -p1 -%patch -P36 -p1 -%patch -P37 -p1 -%patch -P38 -p1 -%patch -P39 -p1 -%patch -P40 -p1 -%patch -P41 -p1 -%patch -P42 -p1 -%patch -P43 -p1 +%patch -P 1 -p1 +%patch -P 2 -p1 +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 6 -p1 +%patch -P 7 -p1 +%patch -P 8 -p1 +%patch -P 9 -p1 +%patch -P 10 -p1 +%patch -P 11 -p1 +%patch -P 12 -p1 +%patch -P 13 -p1 +%patch -P 14 -p1 +%patch -P 15 -p1 +%patch -P 16 -p1 +%patch -P 17 -p1 +%patch -P 18 -p1 +%patch -P 19 -p1 +%patch -P 20 -p1 +%patch -P 21 -p1 +%patch -P 22 -p1 +%patch -P 23 -p1 +%patch -P 24 -p1 +%patch -P 25 -p1 +%patch -P 26 -p1 +%patch -P 27 -p1 +%patch -P 28 -p1 +%patch -P 29 -p1 +%patch -P 30 -p1 +%patch -P 31 -p1 +%patch -P 32 -p1 +%patch -P 33 -p1 +%patch -P 34 -p1 +%patch -P 35 -p1 +%patch -P 36 -p1 +%patch -P 37 -p1 +%patch -P 38 -p1 +%patch -P 39 -p1 +%patch -P 40 -p1 +%patch -P 41 -p1 +%patch -P 42 -p1 +%patch -P 43 -p1 -%patch -P44 -p1 -%patch -P45 -p1 -%patch -P46 -p1 +%patch -P 44 -p1 +%patch -P 45 -p1 +%patch -P 46 -p1 -%patch -P47 -p1 -%patch -P48 -p1 -%patch -P49 -p1 -%patch -P50 -p1 +%patch -P 47 -p1 +%patch -P 48 -p1 +%patch -P 49 -p1 +%patch -P 50 -p1 + +%patch -P 51 -p1 ./bootstrap @@ -285,6 +289,10 @@ fi %{_libdir}/libamu.so* %changelog +* Tue Jan 30 2024 Ian Kent - 5:6.2.0-58 +- allow autoconf 2.72. +- remove BuildRequires (and Requires) libnsl2. + * Wed Jul 17 2024 Fedora Release Engineering - 5:6.2.0-57 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From a8ea799173ad16039373f4d6a1decb65d05c3e80 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 30 Jul 2024 11:59:15 +0800 Subject: [PATCH 151/157] - fix changelog date. --- am-utils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 3d80a7b..96bc359 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -289,7 +289,7 @@ fi %{_libdir}/libamu.so* %changelog -* Tue Jan 30 2024 Ian Kent - 5:6.2.0-58 +* Tue Jul 30 2024 Ian Kent - 5:6.2.0-58 - allow autoconf 2.72. - remove BuildRequires (and Requires) libnsl2. From 7afaaebd8f3968ee33edd1126c1b66348929a57a Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 30 Jul 2024 12:37:23 +0800 Subject: [PATCH 152/157] - don't check kernel verion matches kernel-headers version at build. --- ...-6.2-dont-check-kernel-version-match.patch | 32 +++++++++++++++++++ am-utils.spec | 3 ++ 2 files changed, 35 insertions(+) create mode 100644 am-utils-6.2-dont-check-kernel-version-match.patch diff --git a/am-utils-6.2-dont-check-kernel-version-match.patch b/am-utils-6.2-dont-check-kernel-version-match.patch new file mode 100644 index 0000000..f778e55 --- /dev/null +++ b/am-utils-6.2-dont-check-kernel-version-match.patch @@ -0,0 +1,32 @@ +am-utils-6.2 - dont check kernel version match + +From: Ian Kent + +The configure script checks that the host kernel version matches the +installed headers version. To do this it uses a program that depends +on /usr/include/linux/version.h from the hernel headers. This program +is failing to run (or perhaps to compile) and the Fedora build system +doesn't provide the needed logs to find out why. + +For now comment out this check and assume the kernel-headers package +will be installed due to the BuildRequires and that the include file +/usr/include/linux/version.h will be available. + +Signed-off-by: Ian Kent +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 408964d..5c015b9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -173,7 +173,7 @@ dnl ###################################################################### + dnl Some of these macros must be called before any call to the C compiler + AC_MSG_NOTICE(*** UNIX VARIANTS ***) + dnl UNIX VARIANTS +-AMU_LINUX_HEADERS ++dnl AMU_LINUX_HEADERS + dnl ====================================================================== + + dnl ###################################################################### diff --git a/am-utils.spec b/am-utils.spec index 96bc359..040fd9f 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -104,6 +104,7 @@ Patch49: am-utils-6.2-fix-fedora-mock-build-fail.patch Patch50: am-utils-configure-c99.patch Patch51: am-utils-6.2-allow-autoconf-2.72.patch +Patch52: am-utils-6.2-dont-check-kernel-version-match.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -186,6 +187,7 @@ mounting and unmounting filesystems. %patch -P 50 -p1 %patch -P 51 -p1 +%patch -P 52 -p1 ./bootstrap @@ -292,6 +294,7 @@ fi * Tue Jul 30 2024 Ian Kent - 5:6.2.0-58 - allow autoconf 2.72. - remove BuildRequires (and Requires) libnsl2. +- don't check kernel version matches kernel-headers version at build. * Wed Jul 17 2024 Fedora Release Engineering - 5:6.2.0-57 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 30593ae3fd9bf809c78bca13164cbe8f22e1facf Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 30 Jul 2024 13:14:01 +0800 Subject: [PATCH 153/157] - reinstate the kernel version check and fix configure invocation. --- ...-6.2-dont-check-kernel-version-match.patch | 32 ------------------- am-utils.spec | 8 ++--- 2 files changed, 2 insertions(+), 38 deletions(-) delete mode 100644 am-utils-6.2-dont-check-kernel-version-match.patch diff --git a/am-utils-6.2-dont-check-kernel-version-match.patch b/am-utils-6.2-dont-check-kernel-version-match.patch deleted file mode 100644 index f778e55..0000000 --- a/am-utils-6.2-dont-check-kernel-version-match.patch +++ /dev/null @@ -1,32 +0,0 @@ -am-utils-6.2 - dont check kernel version match - -From: Ian Kent - -The configure script checks that the host kernel version matches the -installed headers version. To do this it uses a program that depends -on /usr/include/linux/version.h from the hernel headers. This program -is failing to run (or perhaps to compile) and the Fedora build system -doesn't provide the needed logs to find out why. - -For now comment out this check and assume the kernel-headers package -will be installed due to the BuildRequires and that the include file -/usr/include/linux/version.h will be available. - -Signed-off-by: Ian Kent ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 408964d..5c015b9 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -173,7 +173,7 @@ dnl ###################################################################### - dnl Some of these macros must be called before any call to the C compiler - AC_MSG_NOTICE(*** UNIX VARIANTS ***) - dnl UNIX VARIANTS --AMU_LINUX_HEADERS -+dnl AMU_LINUX_HEADERS - dnl ====================================================================== - - dnl ###################################################################### diff --git a/am-utils.spec b/am-utils.spec index 040fd9f..46f8c25 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -104,7 +104,6 @@ Patch49: am-utils-6.2-fix-fedora-mock-build-fail.patch Patch50: am-utils-configure-c99.patch Patch51: am-utils-6.2-allow-autoconf-2.72.patch -Patch52: am-utils-6.2-dont-check-kernel-version-match.patch # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in @@ -187,7 +186,6 @@ mounting and unmounting filesystems. %patch -P 50 -p1 %patch -P 51 -p1 -%patch -P 52 -p1 ./bootstrap @@ -199,9 +197,7 @@ chmod +x find-requires %configure \ --enable-shared \ --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ - --enable-cppflags="-I%{_includedir}/nsl" \ - --enable-ldflags="-L%{_libdir}/nsl" \ - --enable-libs="-lnsl -lresolv" \ + --enable-libs="-lresolv" \ --without-hesiod \ --enable-debug @@ -294,7 +290,7 @@ fi * Tue Jul 30 2024 Ian Kent - 5:6.2.0-58 - allow autoconf 2.72. - remove BuildRequires (and Requires) libnsl2. -- don't check kernel version matches kernel-headers version at build. +- also remove references to libnsl in configure invocation. * Wed Jul 17 2024 Fedora Release Engineering - 5:6.2.0-57 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From e2bc00949973c50980c126ed452f1e4318456132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Wed, 28 Aug 2024 07:51:48 +0200 Subject: [PATCH 154/157] convert license to SPDX This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 --- am-utils.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/am-utils.spec b/am-utils.spec index 46f8c25..4369ee1 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,8 +2,9 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 58%{?dist} -License: BSD +Release: 59%{?dist} +# Automatically converted from old format: BSD - review is highly recommended. +License: LicenseRef-Callaway-BSD Epoch: 5 URL: http://am-utils.org # Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git @@ -287,6 +288,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Aug 28 2024 Miroslav Suchý - 5:6.2.0-59 +- convert license to SPDX + * Tue Jul 30 2024 Ian Kent - 5:6.2.0-58 - allow autoconf 2.72. - remove BuildRequires (and Requires) libnsl2. From 979241094be65da81201c40ef532d0ed370a52da Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 10:56:08 +0000 Subject: [PATCH 155/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 4369ee1..33c5f23 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 59%{?dist} +Release: 60%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD Epoch: 5 @@ -288,6 +288,9 @@ fi %{_libdir}/libamu.so* %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 5:6.2.0-60 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Wed Aug 28 2024 Miroslav Suchý - 5:6.2.0-59 - convert license to SPDX From a2bec4d0b4ec5d1a9c44fa166ef812297a92b03a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 16:56:00 +0000 Subject: [PATCH 156/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 33c5f23..5cdf6dc 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 60%{?dist} +Release: 61%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD Epoch: 5 @@ -288,6 +288,9 @@ fi %{_libdir}/libamu.so* %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 5:6.2.0-61 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Thu Jan 16 2025 Fedora Release Engineering - 5:6.2.0-60 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 395ecc79e3026030a875fd050ad5c349d4e5abc5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 16 Jan 2026 03:37:30 +0000 Subject: [PATCH 157/157] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- am-utils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/am-utils.spec b/am-utils.spec index 5cdf6dc..7f08678 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,7 +2,7 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 61%{?dist} +Release: 62%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD Epoch: 5 @@ -288,6 +288,9 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 5:6.2.0-62 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Wed Jul 23 2025 Fedora Release Engineering - 5:6.2.0-61 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild