HTCondor Project List Archives



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Condor-devel] debian support



hi,

Le mercredi 25 octobre 2006 17:50, vous avez écrit :
> 
> If things look good, I think you're done.

here we are (as usual, full patch against 6.8.2 is enclosed) :
foobaz:~/src/pool/condor/public/v6.8$ ls -l | cut -f5- -d ' '

130865367 2006-10-26 01:59 condor-6.8.2-linux-x86-debian-1.i386.rpm
108842547 2006-10-26 02:02 condor-6.8.2-linux-x86-debian-dynamic-1.i386.rpm
122754023 2006-10-26 01:47 condor-6.8.2-linux-x86-debian-dynamic.tar.gz
271205524 2006-10-26 01:50 condor-6.8.2-linux-x86-debian-dynamic-unstripped.tar.gz
147228663 2006-10-26 01:46 condor-6.8.2-linux-x86-debian.tar.gz
297810881 2006-10-26 01:55 condor-6.8.2-linux-x86-debian-unstripped.tar.gz

the prefered packaging system for debian is deb-files, even if we are able to produce rpms as well.

the method is to do a dpkg-buildpackage at root of condor's source tree (where the debian/ directory lies).

moreover, a gcc-3.3.5 / x86_64 port is beeing compiled : thanks to  
Francesco Prelz for giving me access to his computer !

regards,
-- 
guillaume pernot
http://www.praksys.org - Midi-Pyrénées et Aquitaine
Membre du réseau Libre Entreprise
GPG fingerprint : D356 5318 CE52 64C9 0CEF
=== added file 'DOC'
--- DOC	1970-01-01 00:00:00 +0000
+++ DOC	2006-10-22 12:00:34 +0000
@@ -0,0 +1,7 @@
+The documentation for Condor can be found on the World Wide Web at:
+
+http://www.cs.wisc.edu/condor/manual
+
+At that web site, you will find both an on-line version of manual and
+directions for downloading your own copy in a variety of formats. 
+

=== added file 'README'
--- README	1970-01-01 00:00:00 +0000
+++ README	2006-10-22 12:00:34 +0000
@@ -0,0 +1,35 @@
+README for Condor
+
+Please read the file LICENSE.TXT before proceeding.  Installation and
+use of Condor is acknowledgement that you have read and agree to the
+terms listed in the LICENSE.TXT.
+
+This directory contains the following files:
+
+DOC              - file containing directions for where to find the 
+                   Condor documentation
+INSTALL	         - instructions on how to install Condor on your machines
+LICENSE.TXT      - by installing Condor, you agree to the contents of
+                   the LICENSE.TXT file
+README	         - this file
+condor_configure - perl script to install and configure Condor (new method)
+condor_install   - perl script to install and configure Condor (old method)
+examples         - directory containing C, Fortran and C++ example
+                   programs to run with Condor
+release.tar      - tar file of the "release directory", which contains
+                   the Condor binaries and libraries
+
+A complete manual for Condor is available on the World Wide Web at
+http://www.cs.wisc.edu/condor/manual/.  You can also find various
+papers, publications and research about Condor on the web page, at
+http://www.cs.wisc.edu/condor.
+
+Source is no longer being distributed for Condor, so there are no
+instructions for compiling.  Please go to the Condor home page,
+http://www.cs.wisc.edu/condor to find binaries for all major UNIX
+operating systems, Windows, and Mac OSX.  If you would like source to
+Condor, please contact the Condor team directly at
+condor-admin@xxxxxxxxxxxx
+
+If you have any problems, questions, or bugs, please send them to
+condor-admin@xxxxxxxxxxxx  

=== added file 'config/LINUX_DEBIAN.cf'
--- config/LINUX_DEBIAN.cf	1970-01-01 00:00:00 +0000
+++ config/LINUX_DEBIAN.cf	2006-10-24 10:13:44 +0000
@@ -0,0 +1,3 @@
+/* Things specific to LINUX_DEBIAN machines */
+
+/* GLIBC_DIR = /usr/lib */

=== added directory 'debian'
=== added file 'debian/CREDITS'
--- debian/CREDITS	1970-01-01 00:00:00 +0000
+++ debian/CREDITS	2006-10-25 02:26:29 +0000
@@ -0,0 +1,16 @@
+This software is developed by the Condor team:
+
+condor-admin@xxxxxxxxxxx
+
+Work on this package was done by:
+
+Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>
+Andreas Hirczy <ahi@xxxxxxxxxxxxxxxxx>.
+
+Significant ideas and help for packaging have been contributed by:
+
+Martin v. Loewis <martin.vonloewis@xxxxxxxxxxxxxxxxxx>
+
+gcc-4.0 support and build from sources by:
+
+guillaume pernot <gpernot@xxxxxxxxxxx>
\ No newline at end of file

=== added file 'debian/README.Debian'
--- debian/README.Debian	1970-01-01 00:00:00 +0000
+++ debian/README.Debian	2006-09-29 11:45:53 +0000
@@ -0,0 +1,18 @@
+Condor for Debian
+-----------------
+
+Since NO SOURCE CODE is currently available, this package is NON FREE
+according to the DFSG.
+
+This debian package is highly experimental, please tell us your experiences.
+
+The Debian config file template bases on condor_config.generic from the Condor package.
+Old config files in /etc/condor/ are kept in any case, so if you update your installation
+to a new version you could miss some new or changed config file parameters. 
+
+The original LICENCE.TXT file is contained in the copyright file.
+
+This Debian package is based on the initial work of Andreas Hirczy <ahi@xxxxxxxxxxxxxxxxx>.
+I also would like to thank Martin v. Loewis <martin.vonloewis@xxxxxxxxxxxxxxxxxx> for his continuous support.
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>

=== added file 'debian/changelog'
--- debian/changelog	1970-01-01 00:00:00 +0000
+++ debian/changelog	2006-10-25 02:22:36 +0000
@@ -0,0 +1,155 @@
+condor (6.8.2-3) condor; urgency=low
+
+  * statically build glibc 2.3.2 with gcc-4.0
+
+ -- guillaume pernot <gpernot@xxxxxxxxxxx>  Wed, 25 Oct 2006 04:22:24 +0200
+
+condor (6.8.2-2) condor; urgency=low
+
+  * use libc shared objects
+
+ -- guillaume pernot <gpernot@xxxxxxxxxxx>  Mon, 23 Oct 2006 23:47:23 +0200
+
+condor (6.8.2-1) condor; urgency=low
+
+  * initial praksys release
+
+ -- guillaume pernot <gpernot@xxxxxxxxxxx>  Sun, 22 Oct 2006 12:28:10 +0200
+
+condor (6.8.1-1) unstable; urgency=low
+
+  * Update to stable upstream version 6.8.1
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Thu, 3 Oct 2006 11:27:00 +0100
+
+condor (6.8.0-1) unstable; urgency=low
+
+  * Update to stable upstream version 6.8.0
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Thu, 27 Jul 2006 11:27:00 +0100
+
+condor (6.7.20-1) unstable; urgency=low
+
+  * Update to experimental version 6.7.20
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Tue, 27 Jun 2006 11:27:00 +0100
+
+condor (6.7.19-1) unstable; urgency=low
+
+  * Update to experimental version 6.7.19
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Sat, 18 Mai 2006 11:27:00 +0100
+
+condor (6.7.17-1) unstable; urgency=low
+
+  * Update to experimental version 6.7.17
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Sat, 18 Mar 2006 11:27:00 +0100
+
+condor (6.7.16-1) unstable; urgency=low
+
+  * Update to experimental version 6.7.16
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed, 9 Feb 2006 11:27:00 +0100
+
+condor (6.7.14-1) unstable; urgency=low
+
+  * Update to experimental version 6.7.14
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed, 19 Dec 2005 11:27:00 +0100
+
+condor (6.7.13-2) unstable; urgency=low
+
+  * Added DEBCONF query for RESERVED_MEMORY (low priority)
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed, 17 Nov 2005 11:27:00 +0100
+
+condor (6.7.13-1) unstable; urgency=low
+
+  * Update to experimental upstream version 6.7.13
+  * Fixed build process to support ia64 release
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed, 16 Nov 2005 11:27:00 +0100
+
+condor (6.7.12-1) unstable; urgency=low
+
+  * Update to experimental upstream version 6.7.12
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed, 29 Sep 2005 11:27:00 +0100
+
+condor (6.7.6-1) unstable; urgency=low
+
+  * Update to experimental upstream version 6.7.6
+  * added lib/gt4 to debian/rules
+  * Adopted GT3, STORK and CREDD configuration from condor_configure
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed, 23 Mar 2005 11:27:00 +0100
+
+condor (6.7.2-2) unstable; urgency=low
+
+  * added check to avoid the 'adduser' command when the account already exists (thanks to Dan Christensen) 
+  * Condor 6.7.2 places the rsh binary in /usr/libexec, which breaks debian policy; now stored in /usr/lib/condor
+  * Corrected the rules file so that all packaging takes place in the debian/ directory, building should now work correctly
+    with an original condor tgz file
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Mon, 29 Nov 2004 11:35:55 +0100
+
+condor (6.7.2-1) unstable; urgency=low
+
+  * Update to experimental upstream version 6.7.2
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Thu, 7 Oct 2004 12:00:00 +0200
+
+condor (6.7.1-2) unstable; urgency=low
+
+  * Added call to condor_init for the creation of a missing local config file (Thanks to Andreas Hirczy)
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Mon, 27 Sep 2004 11:35:00 +0200
+
+condor (6.7.1-1) unstable; urgency=low
+
+  * Update to experimental upstream version 6.7.1
+  * Introduction of DEBCONF configuration
+  * corrected condor system user addition and deletion
+  * integrated workaround for memory detection problem with Linux 2.6 kernel
+  * corrected soft links for condor binaries
+  
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Thu, 26 Aug 2004 21:00:00 +0200  
+
+condor (6.7.0-1) unstable; urgency=low
+
+  * Maintainer change
+  * Update to experimental upstream version 6.7.0
+  * added lib/gt3 directory to debian/rules  
+  * removed debian/ex.* and debian/*.ex files from source package
+  * JAR and CLASS files placed in in /usr/share/java according to Debian Java policies
+    (see http://tumu.home.mindspring.com/java/debian/policies.html)
+  * x-bit for java files removed
+  * correction of authors file (lintian error) 
+  * Condor LICENCE.TXT removed, since it is contained in the copyright file (lintian error)
+  * check for condor-user home directory removed from init script, avoids error message during startup
+  * replaced all hardlinks with softlinks (lintian error)
+
+ -- Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>  Wed,  4 Aug 2004 13:24:44 +0200
+
+condor (6.6.3-1) unstable; urgency=low
+
+  * Update to new upstream version 6.6.3
+
+ -- Andreas Hirczy <ahi@xxxxxxxxxxxxxxxxx>  Sun, 11 Apr 2004 11:33:17 +0200
+
+condor (6.6.2-1) unstable; urgency=low
+
+  * Update to new upstream version 6.6.2
+  * init skript: changed shutdown sequenze - killall
+  * cleanup: init, README.Debian postinst
+
+ -- Andreas Hirczy <ahi@xxxxxxxxxxxxxxxxx>  Tue, 23 Mar 2004 19:35:02 +0100
+
+condor (6.6.1-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Andreas Hirczy <ahi@xxxxxxxxxxxxxxxxx>  Sat, 20 Mar 2004 23:10:20 +0100
+
+

=== added file 'debian/condor.init'
--- debian/condor.init	1970-01-01 00:00:00 +0000
+++ debian/condor.init	2006-09-29 11:45:53 +0000
@@ -0,0 +1,51 @@
+#! /bin/sh
+#
+# /etc/init.d/condor: start and stop the "Condor workload management system"
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=condor_master
+NAME=condor
+DESC=Condor
+CONF=/etc/$NAME/${NAME}_config
+
+test -f /usr/sbin/$DAEMON || exit 0
+if [ ! -f $CONF ]; then
+    echo "condor config not found: $CONF"
+    echo "       please provide a configuration"
+    exit 0
+fi
+
+set -e
+
+case "$1" in
+    start)
+        echo -n "Starting $DESC: "
+	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+	    --exec /usr/sbin/$DAEMON
+	echo "$NAME."
+	;;
+    stop)
+        echo -n "Stopping $DESC (fast-shutdown mode): "
+	    # send SIGQUIT to the condor_master, which initiates its fast
+            # shutdown method.  The master itself will start sending
+            # SIGKILL to all it's children if they're not gone in 20
+            # seconds.
+	killall -QUIT $DAEMON &>/dev/null || echo -n " *not running* "
+	echo "$NAME."
+	;;
+    reload|force-reload)
+	echo "Reloading $DESC configuration files."
+	/usr/sbin/condor_reconfig
+	;;
+    restart)
+        $0 stop
+	$0 start
+	;;
+    *)
+	N=/etc/init.d/$NAME
+	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0

=== added file 'debian/config'
--- debian/config	1970-01-01 00:00:00 +0000
+++ debian/config	2006-10-22 15:02:29 +0000
@@ -0,0 +1,80 @@
+#!/bin/sh -e
+
+CONFIGFILE=/etc/condor/condor_config
+
+# Source debconf library
+. /usr/share/debconf/confmodule
+db_title 'Condor configuration'
+db_version 2.0
+db_capb backup
+
+# read some existing config values
+if [ -e $CONFIGFILE ]; then
+	CM=`grep -e "^[ \t]*CONDOR_HOST" $CONFIGFILE |cut -d"=" -f2|tr -d " "`
+	db_set condor/centralmanager $CM || true 
+	ADMIN=`grep -e "^[ \t]*CONDOR_ADMIN" $CONFIGFILE |cut -d"=" -f2|tr -d " "`
+	db_set condor/admin $ADMIN || true 
+	UIDD=`grep -e "^[ \t]*UID_DOMAIN" $CONFIGFILE |cut -d"=" -f2|tr -d " "`
+	db_set condor/uiddomain $UIDD || true 
+	FSD=`grep -e "^[ \t]*FILESYSTEM_DOMAIN" $CONFIGFILE |cut -d"=" -f2|tr -d " "`
+	db_set condor/filesystemdomain $FSD || true 
+	RESERVEDMEM=`grep -e "^[ \t]*RESERVED_MEMORY" $CONFIGFILE |cut -d"=" -f2|tr -d " "`
+	db_set condor/reservedmemory $RESERVEDMEM || true 
+	HOSTALLOWWRITE=`grep -e "^[ \t]*HOSTALLOW_WRITE" $CONFIGFILE |cut -d"=" -f2|tr -d " "`
+	db_set condor/hostallowmrite $HOSTALLOWWRITE || true 
+fi
+
+# start state machine
+STATE=1
+while [ "$STATE" != 0 -a "$STATE" != 8 ]; do
+    case "$STATE" in
+    1)
+	db_input medium condor/personal || true
+    ;;
+    2)
+	if [ "$ISPERSONAL" = "false" ]; then
+		db_input medium condor/daemons || true
+	fi
+    ;;
+    3)
+	if [ "$ISPERSONAL" = "false" ]; then
+		db_input medium condor/centralmanager || true
+	fi
+    ;;
+    4)
+	db_input medium condor/admin || true
+    ;;
+    5)
+	if [ "$ISPERSONAL" = "false" ]; then
+		db_input medium condor/uiddomain || true
+	fi
+    ;;
+    6)
+	if [ "$ISPERSONAL" = "false" ]; then
+		db_input medium condor/filesystemdomain || true
+	fi
+    ;;
+    7)
+	if [ "$ISPERSONAL" = "false" ]; then
+		db_input medium condor/hostallowwrite || true
+	fi
+    ;;
+    8)
+	db_input low condor/reservedmemory || true    
+    esac
+
+    if db_go; then
+	if [ $STATE -eq 1 ]; then
+		db_get condor/personal
+		ISPERSONAL=$RET
+	fi
+	STATE=$(($STATE + 1))
+    else
+	STATE=$(($STATE - 1))
+    fi
+done
+db_stop
+
+
+
+

=== added file 'debian/control'
--- debian/control	1970-01-01 00:00:00 +0000
+++ debian/control	2006-10-25 02:28:12 +0000
@@ -0,0 +1,35 @@
+Source: condor
+Section: science
+Priority: optional
+Maintainer: guillaume pernot <gpernot@xxxxxxxxxxx>
+Build-Depends: debhelper (>> 3.0.0), po-debconf, pvm-dev, libkrb5-dev, libssl-dev, libpcre3-dev, zlib1g-dev, gsoap, gcj | gcj-4.0, g++, libstlport5-dev | libstlport4.6-dev, flex, csh, bison
+Standards-Version: 3.6.1.1
+
+Package: condor
+Architecture: any
+Depends: ${shlibs:Depends}, debconf (>= 0.5) | debconf-2.0
+Description: workload management system
+ Condor is a specialized workload management system for compute-intensive
+ jobs. Like other full-featured batch systems, Condor provides a job queueing
+ mechanism, scheduling policy, priority scheme, resource monitoring, and
+ resource management. Users submit their serial or parallel jobs to Condor,
+ Condor places them into a queue, chooses when and where to run the jobs
+ based upon a policy, carefully monitors their progress, and ultimately
+ informs the user upon completion.
+ .
+ While providing functionality similar to that of a more traditional batch
+ queueing system, Condor's novel architecture allows it to succeed in areas
+ where traditional scheduling systems fail. Condor can be used to manage a
+ cluster of dedicated compute nodes (such as a "Beowulf" cluster). In
+ addition, unique mechanisms enable Condor to effectively harness wasted CPU
+ power from otherwise idle desktop workstations. For instance, Condor can be
+ configured to only use desktop machines where the keyboard and mouse are
+ idle. Should Condor detect that a machine is no longer available (such as a
+ key press detected), in many circumstances Condor is able to transparently
+ produce a checkpoint and migrate a job to a different machine which would
+ otherwise be idle. Condor does not require a shared file system across
+ machines - if no shared file system is available, Condor can transfer the
+ job's data files on behalf of the user, or Condor may be able to
+ transparently redirect all the job's I/O requests back to the submit
+ machine. As a result, Condor can be used to seamlessly combine all of an
+ organization's computational power into one resource.

=== added file 'debian/copyright'
--- debian/copyright	1970-01-01 00:00:00 +0000
+++ debian/copyright	2006-10-22 10:29:36 +0000
@@ -0,0 +1,147 @@
+This package was initially debianized by Andreas Hirczy <ahi@xxxxxxxxxxxxx> on
+Thu, 18 Mar 2004 13:13:54 +0100 and is now maintained by Peter Troeger <peter.troeger@xxxxxxxxxxxxxxxxxx>.
+guillaume pernot <gpernot@xxxxxxxxxxx> took over packaging for build from sources.
+
+It was downloaded from <http://www.cs.wisc.edu/condor/>
+
+Upstream Authors: Condor Team <condor-admin@xxxxxxxxxxx>
+
+Copyright: <http://www.cs.wisc.edu/condor/condor-public-license.html>
+
+
+
+CONDOR PUBLIC LICENSE
+
+Version 1.1, October 30, 2003
+
+Copyright (C) 1990-2003 Condor Team, Computer Sciences Department, University
+of Wisconsin-Madison, Madison, WI. All Rights Reserved. For more information
+contact: Condor Team, Attention: Professor Miron Livny, Dept of Computer
+Sciences, 1210 W. Dayton St., Madison, WI 53706-1685, (608) 262-0856 or
+miron@xxxxxxxxxxxx
+
+This software referred to as the Condor(R) Version 6.x software ("Software")
+was developed by the Condor Project, Condor Team, Computer Sciences
+Department, University of Wisconsin-Madison, under the authority of the Board
+of Regents of the University of Wisconsin System and includes voluntary
+contributions made to the Condor Project ("Copyright Holders and Contributors
+and the University"). For more information on the Condor Project, please see
+http://www.condorproject.org/.
+
+Installation, use, reproduction, display, modification and redistribution of
+this Software, with or without modification, in source and binary forms, are
+permitted. Any exercise of rights under this license including sublicenses by
+you is subject to the following conditions:
+
+   1. Redistributions of this Software, with or without modification, must
+      reproduce this Condor Public License in: (1) the Software, and (2) any
+      user documentation or other similar material which is provided with the
+      Software.
+
+   2. Any user documentation included with a redistribution must include the
+      following notice:
+
+          ``This product includes software from the Condor(R) Project
+          (http://www.condorproject.org/)"
+
+      Alternatively, if that is where third-party acknowledgments normally
+      appear, this acknowledgment must be reproduced in the Software itself.
+
+   3. Any academic report, publication, or other academic disclosure of
+      results obtained with this Software will acknowledge this Software's
+      use by an appropriate citation.
+
+   4. The name Condor(R) is a registered trademark of the University of
+      Wisconsin-Madison. The trademark may not be used to endorse or promote
+      software, or products derived therefrom, and, other than as required by
+      section 2 and 3 above, it may not be affixed to modified
+      redistributions of this Software without the prior written approval,
+      obtainable via email to condor-admin@xxxxxxxxxxxx
+
+   5. To the extent that patent claims licensable by the University of
+      Wisconsin-Madison are necessarily infringed by the use or sale of the
+      Software, you are granted a non-exclusive, worldwide, royalty- free
+      perpetual license under such patent claims, with the rights for you to
+      make, use, sell, offer to sell, import and otherwise transfer the
+      Software in source code and object code form and derivative works. This
+      patent license shall apply to the combination of the Software with
+      other software if, at the time the Software is added by you, such
+      addition of the Software causes such combination to be covered by such
+      patent claims. This patent license shall not apply to any other
+      combinations which include the Software. No hardware per se is licensed
+      hereunder.
+
+      If you or any subsequent sub-licensee (a ``Recipient") institutes
+      patent litigation against any entity (including a cross-claim or
+      counterclaim in a lawsuit) alleging that the Software infringes such
+      Recipient's patent(s), then such Recipient's rights granted (directly
+      or indirectly) under the patent license above shall terminate as of the
+      date such litigation is filed. All sublicenses to the Software which
+      have been properly granted prior to termination shall survive any
+      termination of said patent license, if not otherwise terminated
+      pursuant to this section.
+
+   6. DISCLAIMER
+
+      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AND
+      THE UNIVERSITY "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+      INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+      MERCHANTABILITY, OF SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR
+      PURPOSE OR USE ARE DISCLAIMED. THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+      AND THE UNIVERSITY MAKE NO REPRESENTATION THAT THE SOFTWARE,
+      MODIFICATIONS, ENHANCEMENTS OR DERIVATIVE WORKS THEREOF, WILL NOT
+      INFRINGE ANY PATENT, COPYRIGHT, TRADEMARK, TRADE SECRET OR OTHER
+      PROPRIETARY RIGHT.
+
+   7. LIMITATION OF LIABILITY
+
+      THE COPYRIGHT HOLDERS AND CONTRIBUTORS AND ANY OTHER OFFICER, AGENT, OR
+      EMPLOYEE OF THE UNIVERSITY SHALL HAVE NO LIABILITY TO LICENSEE OR OTHER
+      PERSONS FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL,
+      EXEMPLARY, OR PUNITIVE DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+      LIMITATION, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE,
+      DATA OR PROFITS, OR BUSINESS INTERRUPTION, HOWEVER CAUSED AND ON ANY
+      THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT
+      LIABILITY OR OTHERWISE, ARISING IN ANY WAY OUT OF THE USE OF THIS
+      SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+   8. Certain uses and transfers of the Software or documentation, and/or
+      items or software incorporating the Condor Software or documentation,
+      may require a license under U.S. Export Control laws. Licensee
+      represents and warrants that all uses and transfers of the Condor
+      Software or documentation and/or any items or software incorporating
+      Condor shall be in compliance with U.S. Export Control laws, and
+      Licensee further understands that failure to comply with such export
+      control laws may result in criminal liability to Licensee under
+      U.S. laws.
+
+   9. The Condor Team may publish revised and/or new versions of this Condor
+      Public License (``this License") from time to time. Each version will
+      be given a distinguishing version number. Once Software has been
+      published under a particular version of this License, you may always
+      continue to use it under the terms of that version. You may also choose
+      to use such Software under the terms of any subsequent version of this
+      License published by the Condor Team. No one other than the Condor Team
+      has the right to modify the terms of this License.
+
+For more information:
+
+Condor Team
+Attention: Professor Miron Livny
+7367 Computer Sciences
+1210 W. Dayton St.
+Madison, WI 53706-1685
+miron@xxxxxxxxxxx
+http://www.cs.wisc.edu/~miron/miron.html
+
+
+NOTICES
+
+    * This product includes software developed by and/or derived from the
+      Globus Project (http://www.globus.org/) to which the U.S. Government
+      retains certain rights. Copyright (c) 1999 University of Chicago and
+      The University of Southern California. All Rights Reserved.
+
+    * Some distributions of Condor include a compiled, unmodified version of
+      the GNU C library. The complete source code to GNU glibc can be found
+      at http://www.gnu.org/software/libc/.

=== added file 'debian/dirs'
--- debian/dirs	1970-01-01 00:00:00 +0000
+++ debian/dirs	2006-09-29 11:46:54 +0000
@@ -0,0 +1,6 @@
+etc/condor
+var/log/condor
+var/spool/condor
+var/spool/condor/spool
+var/spool/condor/execute
+var/spool/condor/cred

=== added file 'debian/docs'
--- debian/docs	1970-01-01 00:00:00 +0000
+++ debian/docs	2006-10-22 13:23:37 +0000
@@ -0,0 +1,3 @@
+DOC
+README
+

=== added directory 'debian/po'
=== added file 'debian/po/POTFILES.in'
--- debian/po/POTFILES.in	1970-01-01 00:00:00 +0000
+++ debian/po/POTFILES.in	2006-09-29 11:46:54 +0000
@@ -0,0 +1,1 @@
+[type: gettext/rfc822deb] templates

=== added file 'debian/po/templates.pot'
--- debian/po/templates.pot	1970-01-01 00:00:00 +0000
+++ debian/po/templates.pot	2006-10-22 15:03:21 +0000
@@ -0,0 +1,156 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: gpernot@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2006-10-22 17:03+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../templates:3
+msgid "What machine is your central manager ?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:3
+msgid ""
+"If you want to connect to an existing Condor pool, you need to enter the "
+"address of the central manager machine."
+msgstr ""
+
+#. Type: multiselect
+#. Choices
+#: ../templates:9
+msgid "Job submission, Job execution, Central manager"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../templates:11
+msgid ""
+"Please configure which roles your machine should perform in your Condor pool."
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../templates:11
+msgid ""
+"If you want to submit jobs to an existing pool, you need to activate the "
+"\"Job submission\" option. If you want to allow jobs from a pool to be run "
+"on your local machine, you need to activate the \"Job execution\" option. A "
+"\"Central manager\" is usually only needed once in a pool."
+msgstr ""
+
+#. Type: string
+#. Default
+#: ../templates:19
+msgid "root@localhost"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:20
+msgid "What is the email address of your Condor admin ?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:20
+msgid ""
+"When something goes wrong with condor at your machine, most condor daemons "
+"want to send an email with the error message."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:26
+msgid "What UID_DOMAIN do you want to use ?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:26
+msgid ""
+"The UID_DOMAIN parameter is used to decide under which user to run your "
+"jobs. If the UID_DOMAIN on the submitting machine is different than the "
+"UID_DOMAIN on the machine that runs your job, then Condor will run the job "
+"as the user called 'nobody'. If the UID_DOMAIN is the same on both the "
+"submit and execute machines, then Condor will run the job as the user that "
+"submitted the job. You need to set your UID_DOMAIN to a real domain name, "
+"since Condor compares the submit machine's claimed UID_DOMAIN to its fully "
+"qualified name. When Condor sends e-mail about a job, Condor sends the e-"
+"mail to user@UID_DOMAIN. You could also enter '*' to match all domains "
+"(security hole) or leaved it undefined (all jobs run as 'nobody')."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:40
+msgid "What FILESYSTEM_DOMAIN do you want to use ?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:40
+msgid ""
+"The FILESYSTEM_DOMAIN macro is an arbitrary string that is used to decide if "
+"two machines (a submitting machine and an execute machine) share a file "
+"system. Note that if you leave this parameter blank, Condor will "
+"automatically set the value to be the fully qualified hostname of the local "
+"machine. Since each machine will have a different FILESYSTEM_DOMAIN, they "
+"will not be considered to have shared file systems."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:51
+msgid "Do you want a \"Personal Condor\" installation ?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:51
+msgid ""
+"If you say 'Yes', you will get a fully-functional, one-machine Condor pool "
+"on your local machine. If you want to join an existing pool or want to start "
+"a pool with more than one machine, you should say 'No' here."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:58
+msgid "How much memory would you like reserved from Condor ?"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:58
+msgid ""
+"By default, Condor considers all the physical memory of your machine as  "
+"available to be used by Condor jobs. If this value is defined,  Condor "
+"subtracts it from the amount of memory it advertises as available."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:66
+msgid "Which machines has write access to your pool"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:66
+msgid "Machines listed here can join your pool, submit jobs, etc..."
+msgstr ""

=== added file 'debian/postinst'
--- debian/postinst	1970-01-01 00:00:00 +0000
+++ debian/postinst	2006-09-29 11:46:54 +0000
@@ -0,0 +1,145 @@
+#! /bin/sh -e
+# postinst script for condor
+#
+# see: dh_installdeb(1)
+
+set -e
+
+
+CONFIGFILE=/etc/condor/condor_config
+FQHN=`hostname -f`
+FQDN=`hostname -d`
+
+. /usr/share/debconf/confmodule
+db_version 2.0
+
+do_configure()
+{
+	# add daemon user
+	if ! /usr/bin/getent passwd condor > /dev/null; then 
+		adduser --quiet --no-create-home --system --gecos "Condor Daemon"  condor
+	fi
+
+	# condor_init does not take care of the directory permissions if they exist, so we have to do it
+	chown condor /var/log/condor
+	chmod 755 /var/log/condor
+	chown -R condor /var/spool/condor
+	chmod 755 /var/spool/condor
+	chmod 1777 /var/spool/condor/execute
+	chown condor /etc/condor
+	chmod 0700 /var/spool/condor/cred
+
+	# create config file, if needed
+	if [ ! -e $CONFIGFILE ]; then
+		gunzip -c /usr/share/doc/condor/examples-conf/condor_config.debian.gz > /etc/condor/condor_config
+	fi
+
+	# store admin email address in any case
+	db_get condor/admin
+	ADMIN="$RET"
+	sed -e "s,^[ \t]*CONDOR_ADMIN[ \t]*=.*,CONDOR_ADMIN = $ADMIN," \
+	   < $CONFIGFILE > $CONFIGFILE.tmp
+	mv -f $CONFIGFILE.tmp $CONFIGFILE
+
+	db_get condor/reservedmemory
+	RESERVEDMEM="$RET"
+	if [ "$RET" != "" ]
+	then
+		sed -e "s/^[ \t#]*RESERVED_MEMORY[ \t]*=.*/RESERVED_MEMORY = $RESERVEDMEM/" \
+		< $CONFIGFILE > $CONFIGFILE.tmp
+		mv -f $CONFIGFILE.tmp $CONFIGFILE
+	else
+		sed -e "s/^[ \t#]*RESERVED_MEMORY[ \t]*=.*/#RESERVED_MEMORY = 0/" \
+		< $CONFIGFILE > $CONFIGFILE.tmp
+		mv -f $CONFIGFILE.tmp $CONFIGFILE
+	fi
+
+	# configure personal condor if needed
+	db_get condor/personal
+	if [ "$RET" = "true" ]; then
+		# set personal condor parameters
+		# taken from condor_configure script, which we cannot use directly
+		sed -e "s/^[ \t]*DAEMON_LIST[ \t]*=.*/DAEMON_LIST = MASTER, COLLECTOR, NEGOTIATOR, STARTD, SCHEDD/" \
+		    -e "s/^[ \t]*START[ \t]*=.*/START = TRUE/" \
+		    -e "s/^[ \t]*PREEMPT[ \t]*=.*/PREEMPT = FALSE/" \
+		    -e "s/^[ \t]*SUSPEND[ \t]*=.*/SUSPEND = FALSE/" \
+		    -e "s/^[ \t]*VACATE[ \t]*=.*/VACATE = FALSE/" \
+		    -e "s/^[ \t]*CONDOR_HOST[ \t]*=.*/CONDOR_HOST = $FQHN/" \
+		    -e "s/^[ \t]*UID_DOMAIN[ \t]*=.*/UID_DOMAIN = $FQDN/" \
+		    -e "s/^[ \t]*FILESYSTEM_DOMAIN[ \t]*=.*/FILESYSTEM_DOMAIN = $FQDN/" \
+		    < $CONFIGFILE > $CONFIGFILE.tmp
+		mv -f $CONFIGFILE.tmp $CONFIGFILE
+
+	else
+
+		# configure normal node
+		db_get condor/daemons
+		DAEMONS=`echo $RET | sed -e "s/Job submission/SCHEDD/" \
+					-e "s/Job execution/STARTD/" \
+					-e "s/Central manager/COLLECTOR, NEGOTIATOR/" \
+					-e "s/^/MASTER, /"`
+		db_get condor/centralmanager
+		CENTRALMANAGER="$RET"
+		db_get condor/uiddomain
+		UIDDOMAIN="$RET"
+		db_get condor/filesystemdomain
+		FSDOMAIN="$RET"
+		sed -e "s/^[ \t]*START[ \t]*=.*/START = \$(UWCS_START)/" \
+		    -e "s/^[ \t]*PREEMPT[ \t]*=.*/PREEMPT = \$(UWCS_PREEMPT)/" \
+		    -e "s/^[ \t]*SUSPEND[ \t]*=.*/SUSPEND = \$(UWCS_SUSPEND)/" \
+		    -e "s/^[ \t]*CONDOR_HOST[ \t]*=.*/CONDOR_HOST = $CENTRALMANAGER/" \
+		    -e "s/^[ \t]*UID_DOMAIN[ \t]*=.*/UID_DOMAIN = $UIDDOMAIN/" \
+		    -e "s/^[ \t]*FILESYSTEM_DOMAIN[ \t]*=.*/FILESYSTEM_DOMAIN = $FSDOMAIN/" \
+		    -e "s/^[ \t]*DAEMON_LIST[ \t]*=.*/DAEMON_LIST = $DAEMONS/" \
+		    -e "s/^[ \t]*RESERVED_MEMORY[ \t]*=.*/RESERVED_MEMORY = $RESERVEDMEM/" \
+		    < $CONFIGFILE > $CONFIGFILE.tmp
+		mv -f $CONFIGFILE.tmp $CONFIGFILE
+	fi
+
+	# work around Condor memory detection bug with Linux kernel 2.6
+	# 85 is _SC_PHYS_PAGES, 30 is _SC_PAGESIZE (not available as constants in Perl)
+	case `uname -r` in
+		2.6*)
+			AVAILMEM=`perl -e 'use POSIX;print int(POSIX::sysconf(85)*POSIX::sysconf(30)/1048576);'`
+			sed -e "s/^[ \t#]*MEMORY[ \t]*=.*/MEMORY = $AVAILMEM/" \
+			    < $CONFIGFILE > $CONFIGFILE.tmp
+			mv -f $CONFIGFILE.tmp $CONFIGFILE
+		;;
+	esac
+
+	# run condor_init to create missing files / directories
+	/usr/sbin/condor_init 1> /dev/null 2> /dev/null
+}
+
+do_start()
+{
+	/etc/init.d/condor restart
+}
+
+case "$1" in
+    configure)
+	do_configure
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    reconfigure)
+	do_configure
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+#DEBHELPER#
+
+db_stop
+exit 0
+
+

=== added file 'debian/postrm'
--- debian/postrm	1970-01-01 00:00:00 +0000
+++ debian/postrm	2006-09-29 11:46:54 +0000
@@ -0,0 +1,49 @@
+#! /bin/sh
+# postrm script for condor
+#
+# see: dh_installdeb(1)
+
+set -e
+
+. /usr/share/debconf/confmodule
+db_version 2.0
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+    purge)
+	deluser --quiet --system condor
+	rm -rf /etc/condor/*
+	rm -rf /var/log/condor/*
+	rm -rf /var/log/condor/.[a-z]*
+	rm -rf /var/spool/condor/*
+	rm -rf /usr/share/doc/condor/*
+	db_purge
+	;;
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+db_stop
+
+exit 0

=== added file 'debian/rules'
--- debian/rules	1970-01-01 00:00:00 +0000
+++ debian/rules	2006-10-22 13:31:21 +0000
@@ -0,0 +1,172 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+# This is the debhelper compatibility version to use.
+export DH_COMPAT=4
+
+# some changed directories must be reflected in the config file
+export CONDOR_CONFIGTPL = $(CURDIR)/debian/condor/usr/share/doc/condor/examples-conf/condor_config.debian
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+	CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+	INSTALL_PROGRAM += -s
+endif
+
+configure: configure-stamp
+
+configure-stamp:
+	dh_testdir
+#	Add here commands to configure the package.
+
+	( cd src && ./build_init && ./configure )
+
+	touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+	dh_testdir
+
+	-$(MAKE) -C src release
+
+	touch build-stamp
+
+clean:
+	debconf-updatepo
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	-$(MAKE) -C src clean
+	rm -rf externals/{build,triggers,install}
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	dh_installdocs
+	dh_installexamples
+
+	install -d $(CURDIR)/debian/condor/usr/
+	cp -a src/release_dir/{etc,include,src,lib,libexec,bin,sbin,man} $(CURDIR)/debian/condor/usr/
+
+	mv  $(CURDIR)/debian/condor/usr/etc/examples \
+	    $(CURDIR)/debian/condor/usr/share/doc/condor/examples-conf
+	cp  $(CURDIR)/debian/condor/usr/share/doc/condor/examples-conf/condor_config.generic \
+	    $(CONDOR_CONFIGTPL)
+	echo MPI_CONDOR_RSH_PATH = /usr/lib/condor|cat $(CONDOR_CONFIGTPL) - > $(CONDOR_CONFIGTPL).new
+	echo STORK_MODULE_DIR = /usr/lib/condor|cat $(CONDOR_CONFIGTPL).new - > $(CONDOR_CONFIGTPL)
+	sed -e "s,\@GT3_INSTALL\@,/usr/lib/condor/gt3," \
+            < $(CURDIR)/debian/condor/usr/lib/gt3/server-config.wsdd.in \
+            > $(CURDIR)/debian/condor/usr/lib/gt3/server-config.wsdd
+	sed -e "s,\@GT3_INSTALL\@,/usr/lib/condor/gt3," \
+            < $(CURDIR)/debian/condor/usr/lib/gt3/local-server-config.wsdd.in \
+            > $(CURDIR)/debian/condor/usr/lib/gt3/local-server-config.wsdd
+
+	rm -rf     $(CURDIR)/debian/condor/usr/etc
+	rm -rf     $(CURDIR)/debian/condor/usr/src
+
+	install -d $(CURDIR)/debian/condor/usr/share
+	install -d $(CURDIR)/debian/condor/usr/lib/condor
+	install -d $(CURDIR)/debian/condor/usr/share/java
+	mv  $(CURDIR)/debian/condor/usr/lib/*.{class,jar}  \
+	    $(CURDIR)/debian/condor/usr/share/java/
+	-mv  $(CURDIR)/debian/condor/usr/lib/* \
+	    $(CURDIR)/debian/condor/usr/lib/condor/
+	mv  $(CURDIR)/debian/condor/usr/man  \
+	    $(CURDIR)/debian/condor/usr/share/man
+	mv  $(CURDIR)/debian/condor/usr/libexec/rsh \
+	    $(CURDIR)/debian/condor/usr/lib/condor/
+	chmod ugo-x $(CURDIR)/debian/condor/usr/share/java/*	
+	rm -rf $(CURDIR)/debian/condor/usr/libexec
+	rm -rf $(CURDIR)/debian/condor/usr/lib/condor/real-ld
+	ln -s  ld $(CURDIR)/debian/condor/usr/lib/condor/real-ld
+
+	rm -rf $(CURDIR)/debian/condor/usr/bin/condor_checkpoint
+	ln -s  condor $(CURDIR)/debian/condor/usr/bin/condor_checkpoint
+	rm -rf $(CURDIR)/debian/condor/usr/bin/condor_vacate
+	ln -s  condor $(CURDIR)/debian/condor/usr/bin/condor_vacate
+	rm -rf $(CURDIR)/debian/condor/usr/bin/condor_reschedule
+	ln -s  condor $(CURDIR)/debian/condor/usr/bin/condor_reschedule
+
+	rm -rf $(CURDIR)/debian/condor/usr/bin/condor_hold
+	ln -s  condor_rm $(CURDIR)/debian/condor/usr/bin/condor_hold
+	rm -rf $(CURDIR)/debian/condor/usr/bin/condor_release
+	ln -s  condor_rm $(CURDIR)/debian/condor/usr/bin/condor_release
+	rm -rf $(CURDIR)/debian/condor/usr/bin/condor_vacate_job
+	ln -s  condor_rm $(CURDIR)/debian/condor/usr/bin/condor_vacate_job
+
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_on
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_on
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_off
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_off
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_checkpoint
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_checkpoint
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_vacate
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_vacate
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_restart
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_restart
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_reconfig
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_reconfig
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_reconfig_schedd
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_reconfig_schedd
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_reschedule
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_reschedule
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_master_off
+	ln -s  condor $(CURDIR)/debian/condor/usr/sbin/condor_master_off
+	rm -rf $(CURDIR)/debian/condor/usr/sbin/condor_gridshell
+	ln -s  condor_starter $(CURDIR)/debian/condor/usr/sbin/condor_gridshell
+
+	sed -e "s,^[ \t]*LIB[ \t]*=.*,LIB = /usr/lib/condor," \
+	    -e "s,^[ \t]*RELEASE_DIR[ \t]*=.*,RELEASE_DIR = /usr," \
+	    -e "s,^[ \t]*LOCAL_DIR[ \t]*=.*,LOCAL_DIR = /var," \
+	    -e "s,^[ \t]*LOCAL_CONFIG_FILE[ \t]*=.*,#LOCAL_CONFIG_FILE =," \
+	    -e "s,^[ \t]*EXECUTE[ \t]*=.*,EXECUTE = /var/spool/condor/execute," \
+	    -e "s,^[ \t]*LOCK[ \t]*=.*,LOCK = /var/lock," \
+	    -e "s,^[ \t]*LOG[ \t]*=.*,LOG = /var/log/condor," \
+	    -e "s,^[ \t]*SPOOL[ \t]*=.*,SPOOL = /var/spool/condor/spool," \
+	    -e "s,^[ \t]*HISTORY[ \t]*=.*,HISTORY = /var/spool/condor/history," \
+	    -e "s,^[ \t]*CRED_STORE_DIR[ \t]*=.*,CRED_STORE_DIR = /var/spool/condor/cred," \
+	    < $(CONDOR_CONFIGTPL) > $(CONDOR_CONFIGTPL).tmp
+	mv $(CONDOR_CONFIGTPL).tmp $(CONDOR_CONFIGTPL)
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installdebconf	
+#	dh_installlogrotate
+	dh_installinit
+#	dh_installcron
+	dh_installman
+#	dh_installinfo
+#	dh_undocumented
+	dh_installchangelogs 
+	dh_link
+	dh_strip
+	dh_compress
+	dh_fixperms
+#	dh_makeshlibs
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure

=== added file 'debian/templates'
--- debian/templates	1970-01-01 00:00:00 +0000
+++ debian/templates	2006-10-22 15:02:58 +0000
@@ -0,0 +1,68 @@
+Template: condor/centralmanager
+Type: string
+_Description: What machine is your central manager ?
+ If you want to connect to an existing Condor pool, you need to enter the
+ address of the central manager machine.
+
+Template: condor/daemons
+Type: multiselect
+_Choices: Job submission, Job execution, Central manager
+Default: Job submission, Job execution
+_Description: Please configure which roles your machine should perform in your Condor pool.
+ If you want to submit jobs to an existing pool, you need to activate the
+ "Job submission" option. If you want to allow jobs from a pool to be run
+ on your local machine, you need to activate the "Job execution" option. A
+ "Central manager" is usually only needed once in a pool.
+
+Template: condor/admin
+Type: string
+_Default: root@localhost
+_Description: What is the email address of your Condor admin ?
+ When something goes wrong with condor at your machine, most condor daemons
+ want to send an email with the error message.
+
+Template: condor/uiddomain
+Type: string
+_Description: What UID_DOMAIN do you want to use ?
+ The UID_DOMAIN parameter is used to decide under which user to run your
+ jobs. If the UID_DOMAIN on the submitting machine is different than the
+ UID_DOMAIN on the machine that runs your job, then Condor will run the job
+ as the user called 'nobody'. If the UID_DOMAIN is the same on both the
+ submit and execute machines, then Condor will run the job as the user that
+ submitted the job. You need to set your UID_DOMAIN to a real domain name,
+ since Condor compares the submit machine's claimed UID_DOMAIN to its fully
+ qualified name. When Condor sends e-mail about a job, Condor sends the
+ e-mail to user@UID_DOMAIN. You could also enter '*' to match all domains
+ (security hole) or leaved it undefined (all jobs run as 'nobody').
+
+Template: condor/filesystemdomain
+Type: string
+_Description: What FILESYSTEM_DOMAIN do you want to use ?
+ The FILESYSTEM_DOMAIN macro is an arbitrary string that is used to decide
+ if two machines (a submitting machine and an execute machine) share a file
+ system. Note that if you leave this parameter blank, Condor will
+ automatically set the value to be the fully qualified hostname of the
+ local machine. Since each machine will have a different FILESYSTEM_DOMAIN,
+ they will not be considered to have shared file systems.
+
+Template: condor/personal
+Type: boolean
+Default: false
+_Description: Do you want a "Personal Condor" installation ?
+ If you say 'Yes', you will get a fully-functional, one-machine Condor pool
+ on your local machine. If you want to join an existing pool or want to
+ start a pool with more than one machine, you should say 'No' here.
+
+Template: condor/reservedmemory
+Type: string
+_Description: How much memory would you like reserved from Condor ?
+ By default, Condor considers all the physical memory of your machine as 
+ available to be used by Condor jobs. If this value is defined, 
+ Condor subtracts it from the amount of memory it advertises as available.
+
+Template: condor/hostallowwrite
+Type: string
+Default: localhost
+_Description: Which machines has write access to your pool
+ Machines listed here can join your pool, submit jobs, etc...
+

=== added file 'externals/bundles/blahp/1.7.0/batch_gahp_daemon-classad.patch'
--- externals/bundles/blahp/1.7.0/batch_gahp_daemon-classad.patch	1970-01-01 00:00:00 +0000
+++ externals/bundles/blahp/1.7.0/batch_gahp_daemon-classad.patch	2006-10-19 22:08:48 +0000
@@ -0,0 +1,11 @@
+--- org.glite.ce.blahp/src/Makefile.am	2006-10-20 00:06:56.000000000 +0200
++++ org.glite.ce.blahp-patched/src/Makefile.am	2006-10-20 00:08:12.000000000 +0200
+@@ -28,7 +28,7 @@
+ 
+ batch_gahp_LDADD = $(CLASSAD_LIBS)
+ 
+-batch_gahp_daemon_LDADD = $(blahpd_LDADD)
++batch_gahp_daemon_LDADD = $(blahpd_LDADD) $(CLASSAD_LIBS)
+ 
+ BPRclient_SOURCES = BPRclient.c BPRcomm.c tokens.c
+ 

=== added file 'externals/bundles/classads/0.9.8-b3/g++4.0.patch'
--- externals/bundles/classads/0.9.8-b3/g++4.0.patch	1970-01-01 00:00:00 +0000
+++ externals/bundles/classads/0.9.8-b3/g++4.0.patch	2006-10-18 13:12:03 +0000
@@ -0,0 +1,11 @@
+--- classads-0.9.8-b3/classad_stl.h	2005-10-27 21:10:49.000000000 +0200
++++ classads-0.9.8-b3/classad_stl.h.patched	2006-10-18 15:11:26.000000000 +0200
+@@ -42,7 +42,7 @@
+ 	
+ 
+ #ifdef __GNUC__
+-  #if (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
++  #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0))
+     #define classad_hash_map __gnu_cxx::hash_map 
+     #define classad_slist    __gnu_cxx::slist
+   #else

=== added file 'externals/bundles/glibc/2.3.2.27.9.7/gcc-3.4-fixes.patch'
--- externals/bundles/glibc/2.3.2.27.9.7/gcc-3.4-fixes.patch	1970-01-01 00:00:00 +0000
+++ externals/bundles/glibc/2.3.2.27.9.7/gcc-3.4-fixes.patch	2006-10-25 22:40:39 +0000
@@ -0,0 +1,2097 @@
+diff -ru glibc-2.3.2.27.9.7.orig/c_stubs/gconv_stubs.c glibc-2.3.2.27.9.7/c_stubs/gconv_stubs.c
+--- glibc-2.3.2.27.9.7.orig/c_stubs/gconv_stubs.c	2003-03-22 13:55:28.000000000 +0100
++++ glibc-2.3.2.27.9.7/c_stubs/gconv_stubs.c	2006-10-25 03:19:41.000000000 +0200
+@@ -18,7 +18,27 @@
+    Boston, MA 02111-1307, USA.  */
+ 
+ #include <features.h>
++
++/* strange hack workaround for gcc-3.4.0.  Might be a better way. */
++#define __gconv_close_transform foo__gconv_close_transform
++#define __gconv foo__gconv
++#define __gconv_find_transform foo__gconv_find_transform
++#define __gconv_open foo__gconv_open
++#define __gconv_close foo__gconv_close
++#define __gconv_release_cache foo__gconv_release_cache
++#define __gconv_release_step foo__gconv_release_step
++
+ #include <gconv_int.h>
++
++#undef __gconv_close_transform
++#undef __gconv
++#undef __gconv_find_transform
++#undef __gconv_open
++#undef __gconv_close
++#undef __gconv_release_cache
++#undef __gconv_release_step
++
++
+ #include <string.h>
+ #include <wchar.h>
+ 
+diff -ru glibc-2.3.2.27.9.7.orig/elf/dl-load.c glibc-2.3.2.27.9.7/elf/dl-load.c
+--- glibc-2.3.2.27.9.7.orig/elf/dl-load.c	2003-12-01 22:21:04.000000000 +0100
++++ glibc-2.3.2.27.9.7/elf/dl-load.c	2006-10-25 01:16:45.000000000 +0200
+@@ -1227,7 +1227,9 @@
+       }
+     else
+       /* Adjust the PT_PHDR value by the runtime load address.  */
+-      (ElfW(Addr)) l->l_phdr += l->l_addr;
++      /* (ElfW(Addr)) l->l_phdr += l->l_addr; */
++      l->l_phdr = (ElfW(Phdr) *) ((ElfW(Addr)) l->l_phdr + l->l_addr);
++
+   }
+ 
+ #ifdef USE_TLS
+@@ -1253,7 +1255,8 @@
+ 	}
+     }
+   else
+-    (ElfW(Addr)) l->l_ld += l->l_addr;
++    /* (ElfW(Addr)) l->l_ld += l->l_addr; */
++    l->l_ld = (ElfW(Dyn) *) ((ElfW(Addr)) l->l_ld + l->l_addr);
+ 
+   l->l_entry += l->l_addr;
+ 
+diff -ru glibc-2.3.2.27.9.7.orig/elf/dl-runtime.c glibc-2.3.2.27.9.7/elf/dl-runtime.c
+--- glibc-2.3.2.27.9.7.orig/elf/dl-runtime.c	2003-02-07 20:43:36.000000000 +0100
++++ glibc-2.3.2.27.9.7/elf/dl-runtime.c	2006-10-25 02:11:37.000000000 +0200
+@@ -45,7 +45,7 @@
+    function.  */
+ 
+ #ifndef ELF_MACHINE_NO_PLT
+-static ElfW(Addr) __attribute_used__
++ElfW(Addr) __attribute__ ((regparm (2), unused))
+ fixup (
+ # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
+         ELF_MACHINE_RUNTIME_FIXUP_ARGS,
+@@ -132,7 +132,7 @@
+ 
+ #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__
+ 
+-static ElfW(Addr) __attribute_used__
++ElfW(Addr) __attribute__ ((regparm (3), unused))
+ profile_fixup (
+ #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
+        ELF_MACHINE_RUNTIME_FIXUP_ARGS,
+diff -ru glibc-2.3.2.27.9.7.orig/elf/do-rel.h glibc-2.3.2.27.9.7/elf/do-rel.h
+--- glibc-2.3.2.27.9.7.orig/elf/do-rel.h	2003-01-30 18:36:34.000000000 +0100
++++ glibc-2.3.2.27.9.7/elf/do-rel.h	2006-10-25 01:24:46.000000000 +0200
+@@ -49,7 +49,7 @@
+    relocations; they should be set up to call _dl_runtime_resolve, rather
+    than fully resolved now.  */
+ 
+-static inline void __attribute__ ((always_inline))
++auto inline void __attribute__ ((always_inline))
+ elf_dynamic_do_rel (struct link_map *map,
+ 		    ElfW(Addr) reladdr, ElfW(Addr) relsize,
+ 		    int lazy)
+diff -ru glibc-2.3.2.27.9.7.orig/elf/dynamic-link.h glibc-2.3.2.27.9.7/elf/dynamic-link.h
+--- glibc-2.3.2.27.9.7.orig/elf/dynamic-link.h	2003-01-30 18:36:56.000000000 +0100
++++ glibc-2.3.2.27.9.7/elf/dynamic-link.h	2006-10-25 01:25:58.000000000 +0200
+@@ -55,7 +55,12 @@
+ 
+ /* Read the dynamic section at DYN and fill in INFO with indices DT_*.  */
+ 
+-static inline void __attribute__ ((unused, always_inline))
++#ifndef RESOLVE_MAP
++static
++#else
++auto
++#endif
++inline void __attribute__ ((unused, always_inline))
+ elf_get_dynamic_info (struct link_map *l)
+ {
+   ElfW(Dyn) *dyn = l->l_ld;
+diff -ru glibc-2.3.2.27.9.7.orig/iconv/gconv_open.c glibc-2.3.2.27.9.7/iconv/gconv_open.c
+--- glibc-2.3.2.27.9.7.orig/iconv/gconv_open.c	2001-11-29 05:51:58.000000000 +0100
++++ glibc-2.3.2.27.9.7/iconv/gconv_open.c	2006-10-24 22:52:34.000000000 +0200
+@@ -182,8 +182,17 @@
+ 	      || __builtin_expect (__gconv_translit_find (runp), 0) == 0)
+ 	    lastp = runp;
+ 	  else
+-	    /* This means we haven't found the module.  Remove it.  */
+-	    (lastp == NULL ? trans : lastp->next) = runp->next;
++	    {
++	      /* This means we haven't found the module.  Remove it. */
++	      if (lastp == NULL) 
++		{
++		  trans = runp->next;
++		}
++	      else
++		{
++		  lastp->next = runp->next;
++		}
++	    }
+ 	}
+ 
+       /* Allocate room for handle.  */
+diff -ru glibc-2.3.2.27.9.7.orig/iconv/gconv_simple.c glibc-2.3.2.27.9.7/iconv/gconv_simple.c
+--- glibc-2.3.2.27.9.7.orig/iconv/gconv_simple.c	2003-01-16 08:19:09.000000000 +0100
++++ glibc-2.3.2.27.9.7/iconv/gconv_simple.c	2006-10-24 23:10:06.000000000 +0200
+@@ -1,5 +1,5 @@
+ /* Simple transformations functions.
+-   Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
++   Copyright (C) 1997-2003, 2004, 2005 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
+ 
+@@ -72,6 +72,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4_loop (struct __gconv_step *step,
+ 		    struct __gconv_step_data *step_data,
+ 		    const unsigned char **inptrp, const unsigned char *inend,
+@@ -86,12 +87,13 @@
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+   /* Sigh, we have to do some real work.  */
+   size_t cnt;
++  uint32_t *outptr32 = (uint32_t *) outptr;
+ 
+   for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4)
+-    *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr);
++    *outptr32++ = bswap_32 (*(const uint32_t *) inptr);
+ 
+   *inptrp = inptr;
+-  *outptrp = outptr;
++  *outptrp = (unsigned char *) outptr32;
+ #elif __BYTE_ORDER == __BIG_ENDIAN
+   /* Simply copy the data.  */
+   *inptrp = inptr + n_convert * 4;
+@@ -113,6 +115,7 @@
+ 
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4_loop_unaligned (struct __gconv_step *step,
+ 			      struct __gconv_step_data *step_data,
+ 			      const unsigned char **inptrp,
+@@ -161,6 +164,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4_loop_single (struct __gconv_step *step,
+ 			   struct __gconv_step_data *step_data,
+ 			   const unsigned char **inptrp,
+@@ -189,13 +193,16 @@
+   (*outptrp)[2] = state->__value.__wchb[1];
+   (*outptrp)[3] = state->__value.__wchb[0];
+ 
+-  *outptrp += 4;
+ #elif __BYTE_ORDER == __BIG_ENDIAN
+   /* XXX unaligned */
+-  *(*((uint32_t **) outptrp)++) = state->__value.__wch;
++  (*outptrp)[0] = state->__value.__wchb[0];
++  (*outptrp)[1] = state->__value.__wchb[1];
++  (*outptrp)[2] = state->__value.__wchb[2];
++  (*outptrp)[3] = state->__value.__wchb[3];
+ #else
+ # error "This endianess is not supported."
+ #endif
++  *outptrp += 4;
+ 
+   /* Clear the state buffer.  */
+   state->__count &= ~7;
+@@ -219,6 +226,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ ucs4_internal_loop (struct __gconv_step *step,
+ 		    struct __gconv_step_data *step_data,
+ 		    const unsigned char **inptrp, const unsigned char *inend,
+@@ -264,7 +272,8 @@
+ 	  return __GCONV_ILLEGAL_INPUT;
+ 	}
+ 
+-      *((uint32_t *) outptr)++ = inval;
++      *((uint32_t *) outptr) = inval;
++      outptr += sizeof (uint32_t);
+     }
+ 
+   *inptrp = inptr;
+@@ -283,6 +292,7 @@
+ 
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ ucs4_internal_loop_unaligned (struct __gconv_step *step,
+ 			      struct __gconv_step_data *step_data,
+ 			      const unsigned char **inptrp,
+@@ -352,6 +362,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ ucs4_internal_loop_single (struct __gconv_step *step,
+ 			   struct __gconv_step_data *step_data,
+ 			   const unsigned char **inptrp,
+@@ -426,6 +437,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4le_loop (struct __gconv_step *step,
+ 		      struct __gconv_step_data *step_data,
+ 		      const unsigned char **inptrp, const unsigned char *inend,
+@@ -440,9 +452,11 @@
+ #if __BYTE_ORDER == __BIG_ENDIAN
+   /* Sigh, we have to do some real work.  */
+   size_t cnt;
++  uint32_t *outptr32 = (uint32_t *) outptr;
+ 
+   for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4)
+-    *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr);
++    *outptr32++ = bswap_32 (*(const uint32_t *) inptr);
++  outptr = (unsigned char *) outptr32;
+ 
+   *inptrp = inptr;
+   *outptrp = outptr;
+@@ -467,6 +481,7 @@
+ 
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4le_loop_unaligned (struct __gconv_step *step,
+ 				struct __gconv_step_data *step_data,
+ 				const unsigned char **inptrp,
+@@ -518,6 +533,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4le_loop_single (struct __gconv_step *step,
+ 			     struct __gconv_step_data *step_data,
+ 			     const unsigned char **inptrp,
+@@ -546,12 +562,17 @@
+   (*outptrp)[2] = state->__value.__wchb[1];
+   (*outptrp)[3] = state->__value.__wchb[0];
+ 
+-  *outptrp += 4;
+ #else
+   /* XXX unaligned */
+-  *(*((uint32_t **) outptrp)++) = state->__value.__wch;
++  (*outptrp)[0] = state->__value.__wchb[0];
++  (*outptrp)[1] = state->__value.__wchb[1];
++  (*outptrp)[2] = state->__value.__wchb[2];
++  (*outptrp)[3] = state->__value.__wchb[3];
++
+ #endif
+ 
++  *outptrp += 4;
++
+   /* Clear the state buffer.  */
+   state->__count &= ~7;
+ 
+@@ -573,6 +594,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ ucs4le_internal_loop (struct __gconv_step *step,
+ 		      struct __gconv_step_data *step_data,
+ 		      const unsigned char **inptrp, const unsigned char *inend,
+@@ -616,7 +638,8 @@
+ 	  return __GCONV_ILLEGAL_INPUT;
+ 	}
+ 
+-      *((uint32_t *) outptr)++ = inval;
++      *((uint32_t *) outptr) = inval;
++      outptr += sizeof (uint32_t);
+     }
+ 
+   *inptrp = inptr;
+@@ -638,6 +661,7 @@
+ 
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ ucs4le_internal_loop_unaligned (struct __gconv_step *step,
+ 				struct __gconv_step_data *step_data,
+ 				const unsigned char **inptrp,
+@@ -711,6 +735,7 @@
+ 
+ 
+ static inline int
++__attribute ((always_inline))
+ ucs4le_internal_loop_single (struct __gconv_step *step,
+ 			     struct __gconv_step_data *step_data,
+ 			     const unsigned char **inptrp,
+@@ -796,7 +821,8 @@
+       }									      \
+     else								      \
+       /* It's an one byte sequence.  */					      \
+-      *((uint32_t *) outptr)++ = *inptr++;				      \
++      *((uint32_t *) outptr) = *inptr++;				      \
++      outptr += sizeof (uint32_t);					      \
+   }
+ #define LOOP_NEED_FLAGS
+ #include <iconv/loop.c>
+@@ -826,7 +852,8 @@
+       }									      \
+     else								      \
+       /* It's an one byte sequence.  */					      \
+-      *outptr++ = *((const uint32_t *) inptr)++;			      \
++      *outptr++ = *((const uint32_t *) inptr);				      \
++      inptr += sizeof (uint32_t);					      \
+   }
+ #define LOOP_NEED_FLAGS
+ #include <iconv/loop.c>
+@@ -859,7 +886,7 @@
+     else if (__builtin_expect (wc <= 0x7fffffff, 1))			      \
+       {									      \
+ 	size_t step;							      \
+-	char *start;							      \
++	unsigned char *start;						      \
+ 									      \
+ 	for (step = 2; step < 6; ++step)				      \
+ 	  if ((wc & (~(uint32_t)0 << (5 * step + 1))) == 0)		      \
+@@ -875,13 +902,12 @@
+ 	start = outptr;							      \
+ 	*outptr = (unsigned char) (~0xff >> step);			      \
+ 	outptr += step;							      \
+-	--step;								      \
+ 	do								      \
+ 	  {								      \
+-	    start[step] = 0x80 | (wc & 0x3f);				      \
++	    start[--step] = 0x80 | (wc & 0x3f);				      \
+ 	    wc >>= 6;							      \
+ 	  }								      \
+-	while (--step > 0);						      \
++	while (step > 1);						      \
+ 	start[0] |= wc;							      \
+       }									      \
+     else								      \
+@@ -963,18 +989,17 @@
+ 	  }								      \
+ 	else								      \
+ 	  {								      \
+-	    int skipped;						      \
+-									      \
+ 	    /* Search the end of this ill-formed UTF-8 character.  This	      \
+ 	       is the next byte with (x & 0xc0) != 0x80.  */		      \
+-	    skipped = 0;						      \
++	    i = 0;							      \
+ 	    do								      \
+-	      ++skipped;						      \
+-	    while (inptr + skipped < inend				      \
+-		   && (*(inptr + skipped) & 0xc0) == 0x80		      \
+-		   && skipped < 5);					      \
++	      ++i;							      \
++	    while (inptr + i < inend					      \
++		   && (*(inptr + i) & 0xc0) == 0x80			      \
++		   && i < 5);						      \
+ 									      \
+-	    STANDARD_FROM_LOOP_ERR_HANDLER (skipped);			      \
++	  errout:							      \
++	    STANDARD_FROM_LOOP_ERR_HANDLER (i);				      \
+ 	  }								      \
+ 									      \
+ 	if (__builtin_expect (inptr + cnt > inend, 0))			      \
+@@ -991,7 +1016,7 @@
+ 		break;							      \
+ 	      }								      \
+ 									      \
+-	    STANDARD_FROM_LOOP_ERR_HANDLER (i);				      \
++	    goto errout;						      \
+ 	  }								      \
+ 									      \
+ 	/* Read the possible remaining bytes.  */			      \
+@@ -1013,14 +1038,15 @@
+ 	if (i < cnt || (cnt > 2 && (ch >> (5 * cnt - 4)) == 0))		      \
+ 	  {								      \
+ 	    /* This is an illegal encoding.  */				      \
+-	    STANDARD_FROM_LOOP_ERR_HANDLER (i);				      \
++	    goto errout;						      \
+ 	  }								      \
+ 									      \
+ 	inptr += cnt;							      \
+       }									      \
+ 									      \
+     /* Now adjust the pointers and store the result.  */		      \
+-    *((uint32_t *) outptr)++ = ch;					      \
++    *((uint32_t *) outptr) = ch;					      \
++    outptr += sizeof (uint32_t);					      \
+   }
+ #define LOOP_NEED_FLAGS
+ 
+@@ -1132,7 +1158,7 @@
+ #define LOOPFCT			FROM_LOOP
+ #define BODY \
+   {									      \
+-    uint16_t u1 = *((const uint16_t *) inptr);				      \
++    uint16_t u1 = get16 (inptr);					      \
+ 									      \
+     if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0))		      \
+       {									      \
+@@ -1141,7 +1167,8 @@
+ 	STANDARD_FROM_LOOP_ERR_HANDLER (2);				      \
+       }									      \
+ 									      \
+-    *((uint32_t *) outptr)++ = u1;					      \
++    *((uint32_t *) outptr) = u1;					      \
++    outptr += sizeof (uint32_t);					      \
+     inptr += 2;								      \
+   }
+ #define LOOP_NEED_FLAGS
+@@ -1189,7 +1216,8 @@
+       }									      \
+     else								      \
+       {									      \
+-	*((uint16_t *) outptr)++ = val;					      \
++	put16 (outptr, val);						      \
++        outptr += sizeof (uint16_t);					      \
+ 	inptr += 4;							      \
+       }									      \
+   }
+@@ -1214,7 +1242,7 @@
+ #define LOOPFCT			FROM_LOOP
+ #define BODY \
+   {									      \
+-    uint16_t u1 = bswap_16 (*((const uint16_t *) inptr));		      \
++    uint16_t u1 = bswap_16 (get16 (inptr));				      \
+ 									      \
+     if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0))		      \
+       {									      \
+@@ -1230,7 +1258,8 @@
+ 	continue;							      \
+       }									      \
+ 									      \
+-    *((uint32_t *) outptr)++ = u1;					      \
++    *((uint32_t *) outptr) = u1;					      \
++    outptr += sizeof (uint32_t);					      \
+     inptr += 2;								      \
+   }
+ #define LOOP_NEED_FLAGS
+@@ -1279,7 +1308,8 @@
+       }									      \
+     else								      \
+       {									      \
+-	*((uint16_t *) outptr)++ = bswap_16 (val);			      \
++	put16 (outptr, bswap_16 (val));					      \
++	outptr += sizeof (uint16_t);					      \
+ 	inptr += 4;							      \
+       }									      \
+   }
+diff -ru glibc-2.3.2.27.9.7.orig/iconv/iconvconfig.c glibc-2.3.2.27.9.7/iconv/iconvconfig.c
+--- glibc-2.3.2.27.9.7.orig/iconv/iconvconfig.c	2003-01-02 21:12:03.000000000 +0100
++++ glibc-2.3.2.27.9.7/iconv/iconvconfig.c	2006-10-25 02:04:36.000000000 +0200
+@@ -1010,7 +1010,7 @@
+   char finalname[prefix_len + sizeof (GCONV_MODULES_CACHE)];
+ 
+   /* Function to insert the names.  */
+-  static void name_insert (const void *nodep, VISIT value, int level)
++  auto void name_insert (const void *nodep, VISIT value, int level)
+     {
+       struct name *name;
+       unsigned int idx;
+diff -ru glibc-2.3.2.27.9.7.orig/locale/weight.h glibc-2.3.2.27.9.7/locale/weight.h
+--- glibc-2.3.2.27.9.7.orig/locale/weight.h	2001-07-06 06:55:33.000000000 +0200
++++ glibc-2.3.2.27.9.7/locale/weight.h	2006-10-25 00:16:45.000000000 +0200
+@@ -18,7 +18,8 @@
+    02111-1307 USA.  */
+ 
+ /* Find index of weight.  */
+-static inline int32_t
++auto inline int32_t
++__attribute ((always_inline))
+ findidx (const unsigned char **cpp)
+ {
+   int_fast32_t i = table[*(*cpp)++];
+diff -ru glibc-2.3.2.27.9.7.orig/locale/weightwc.h glibc-2.3.2.27.9.7/locale/weightwc.h
+--- glibc-2.3.2.27.9.7.orig/locale/weightwc.h	2001-08-07 06:26:15.000000000 +0200
++++ glibc-2.3.2.27.9.7/locale/weightwc.h	2006-10-25 00:24:11.000000000 +0200
+@@ -18,7 +18,8 @@
+    02111-1307 USA.  */
+ 
+ /* Find index of weight.  */
+-static inline int32_t
++auto inline int32_t
++__attribute ((always_inline))
+ findidx (const wint_t **cpp)
+ {
+   int32_t i;
+diff -ru glibc-2.3.2.27.9.7.orig/malloc/obstack.c glibc-2.3.2.27.9.7/malloc/obstack.c
+--- glibc-2.3.2.27.9.7.orig/malloc/obstack.c	2002-11-01 21:43:32.000000000 +0100
++++ glibc-2.3.2.27.9.7/malloc/obstack.c	2006-10-25 03:04:11.000000000 +0200
+@@ -1,7 +1,7 @@
+ /* obstack.c - subroutines used implicitly by object stack macros
+-   Copyright (C) 1988-1994, 1996-2001, 2002 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.  Its master source is NOT part of
+-   the C library, however.  The master source lives in /gd/gnu/lib.
++   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
++   1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+@@ -15,17 +15,19 @@
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-   02111-1307 USA.  */
++   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
+ 
+ #ifdef HAVE_CONFIG_H
+ # include <config.h>
+ #endif
+ 
+ #ifdef _LIBC
+-#include <obstack.h>
++# include <obstack.h>
++# include <shlib-compat.h>
+ #else
+-#include "obstack.h"
++# include "obstack.h"
+ #endif
+ 
+ /* NOTE BEFORE MODIFYING THIS FILE: This version number must be
+@@ -50,28 +52,38 @@
+ # endif
+ #endif
+ 
+-#if defined _LIBC && defined USE_IN_LIBIO
+-# include <wchar.h>
+-#endif
++#include <stddef.h>
+ 
+ #ifndef ELIDE_CODE
+ 
+ 
+-# if defined __STDC__ && __STDC__
+-#  define POINTER void *
+-# else
+-#  define POINTER char *
++# if HAVE_INTTYPES_H
++#  include <inttypes.h>
++# endif
++# if HAVE_STDINT_H || defined _LIBC
++#  include <stdint.h>
+ # endif
+ 
+ /* Determine default alignment.  */
+-struct fooalign {char x; double d;};
+-# define DEFAULT_ALIGNMENT  \
+-  ((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0))
++union fooround
++{
++  uintmax_t i;
++  long double d;
++  void *p;
++};
++struct fooalign
++{
++  char c;
++  union fooround u;
++};
+ /* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
+    But in fact it might be less smart and round addresses to as much as
+    DEFAULT_ROUNDING.  So we prepare for it to do that.  */
+-union fooround {long x; double d;};
+-# define DEFAULT_ROUNDING (sizeof (union fooround))
++enum
++  {
++    DEFAULT_ALIGNMENT = offsetof (struct fooalign, u),
++    DEFAULT_ROUNDING = sizeof (union fooround)
++  };
+ 
+ /* When we copy a long block of data, this is the unit to do it with.
+    On some machines, copying successive ints does not work;
+@@ -88,27 +100,27 @@
+    abort gracefully or use longjump - but shouldn't return.  This
+    variable by default points to the internal function
+    `print_and_abort'.  */
+-# if defined __STDC__ && __STDC__
+ static void print_and_abort (void);
+ void (*obstack_alloc_failed_handler) (void) = print_and_abort;
+-# else
+-static void print_and_abort ();
+-void (*obstack_alloc_failed_handler) () = print_and_abort;
+-# endif
+ 
+ /* Exit value used when `print_and_abort' is used.  */
+-# if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
+-#  include <stdlib.h>
+-# endif
+-# ifndef EXIT_FAILURE
+-#  define EXIT_FAILURE 1
+-# endif
++# include <stdlib.h>
++# ifdef _LIBC
+ int obstack_exit_failure = EXIT_FAILURE;
++# else
++#  include "exitfail.h"
++#  define obstack_exit_failure exit_failure
++# endif
+ 
+-/* The non-GNU-C macros copy the obstack into this global variable
+-   to avoid multiple evaluation.  */
+-
+-struct obstack *_obstack;
++# ifdef _LIBC
++#  if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
++/* A looong time ago (before 1994, anyway; we're not sure) this global variable
++   was used by non-GNU-C macros to avoid multiple evaluation.  The GNU C
++   library still exports it because somebody might use it.  */
++struct obstack *_obstack_compat;
++compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
++#  endif
++# endif
+ 
+ /* Define a macro that either calls functions with the traditional malloc/free
+    calling interface, or calls functions with the mmalloc/mfree interface
+@@ -116,33 +128,18 @@
+    For free, do not use ?:, since some compilers, like the MIPS compilers,
+    do not allow (expr) ? void : void.  */
+ 
+-# if defined __STDC__ && __STDC__
+-#  define CALL_CHUNKFUN(h, size) \
++# define CALL_CHUNKFUN(h, size) \
+   (((h) -> use_extra_arg) \
+    ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
+    : (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
+ 
+-#  define CALL_FREEFUN(h, old_chunk) \
++# define CALL_FREEFUN(h, old_chunk) \
+   do { \
+     if ((h) -> use_extra_arg) \
+       (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
+     else \
+       (*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
+   } while (0)
+-# else
+-#  define CALL_CHUNKFUN(h, size) \
+-  (((h) -> use_extra_arg) \
+-   ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
+-   : (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size)))
+-
+-#  define CALL_FREEFUN(h, old_chunk) \
+-  do { \
+-    if ((h) -> use_extra_arg) \
+-      (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
+-    else \
+-      (*(void (*) ()) (h)->freefun) ((old_chunk)); \
+-  } while (0)
+-# endif
+ 
+ 
+ /* Initialize an obstack H for use.  Specify chunk size SIZE (0 means default).
+@@ -154,22 +151,15 @@
+    allocation fails.  */
+ 
+ int
+-_obstack_begin (h, size, alignment, chunkfun, freefun)
+-     struct obstack *h;
+-     int size;
+-     int alignment;
+-# if defined __STDC__ && __STDC__
+-     POINTER (*chunkfun) (long);
+-     void (*freefun) (void *);
+-# else
+-     POINTER (*chunkfun) ();
+-     void (*freefun) ();
+-# endif
++_obstack_begin (struct obstack *h,
++		int size, int alignment,
++		void *(*chunkfun) (long),
++		void (*freefun) (void *))
+ {
+   register struct _obstack_chunk *chunk; /* points to new chunk */
+ 
+   if (alignment == 0)
+-    alignment = (int) DEFAULT_ALIGNMENT;
++    alignment = DEFAULT_ALIGNMENT;
+   if (size == 0)
+     /* Default size is what GNU malloc can fit in a 4096-byte block.  */
+     {
+@@ -187,13 +177,8 @@
+       size = 4096 - extra;
+     }
+ 
+-# if defined __STDC__ && __STDC__
+   h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
+   h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
+-# else
+-  h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
+-  h->freefun = freefun;
+-# endif
+   h->chunk_size = size;
+   h->alignment_mask = alignment - 1;
+   h->use_extra_arg = 0;
+@@ -201,7 +186,8 @@
+   chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
+   if (!chunk)
+     (*obstack_alloc_failed_handler) ();
+-  h->next_free = h->object_base = chunk->contents;
++  h->next_free = h->object_base = __PTR_ALIGN ((char *) chunk, chunk->contents,
++					       alignment - 1);
+   h->chunk_limit = chunk->limit
+     = (char *) chunk + h->chunk_size;
+   chunk->prev = 0;
+@@ -212,23 +198,15 @@
+ }
+ 
+ int
+-_obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
+-     struct obstack *h;
+-     int size;
+-     int alignment;
+-# if defined __STDC__ && __STDC__
+-     POINTER (*chunkfun) (POINTER, long);
+-     void (*freefun) (POINTER, POINTER);
+-# else
+-     POINTER (*chunkfun) ();
+-     void (*freefun) ();
+-# endif
+-     POINTER arg;
++_obstack_begin_1 (struct obstack *h, int size, int alignment,
++		  void *(*chunkfun) (void *, long),
++		  void (*freefun) (void *, void *),
++		  void *arg)
+ {
+   register struct _obstack_chunk *chunk; /* points to new chunk */
+ 
+   if (alignment == 0)
+-    alignment = (int) DEFAULT_ALIGNMENT;
++    alignment = DEFAULT_ALIGNMENT;
+   if (size == 0)
+     /* Default size is what GNU malloc can fit in a 4096-byte block.  */
+     {
+@@ -246,13 +224,8 @@
+       size = 4096 - extra;
+     }
+ 
+-# if defined __STDC__ && __STDC__
+   h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
+   h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
+-# else
+-  h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
+-  h->freefun = freefun;
+-# endif
+   h->chunk_size = size;
+   h->alignment_mask = alignment - 1;
+   h->extra_arg = arg;
+@@ -261,7 +234,8 @@
+   chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
+   if (!chunk)
+     (*obstack_alloc_failed_handler) ();
+-  h->next_free = h->object_base = chunk->contents;
++  h->next_free = h->object_base = __PTR_ALIGN ((char *) chunk, chunk->contents,
++					       alignment - 1);
+   h->chunk_limit = chunk->limit
+     = (char *) chunk + h->chunk_size;
+   chunk->prev = 0;
+@@ -278,9 +252,7 @@
+    to the beginning of the new one.  */
+ 
+ void
+-_obstack_newchunk (h, length)
+-     struct obstack *h;
+-     int length;
++_obstack_newchunk (struct obstack *h, int length)
+ {
+   register struct _obstack_chunk *old_chunk = h->chunk;
+   register struct _obstack_chunk *new_chunk;
+@@ -305,8 +277,7 @@
+ 
+   /* Compute an aligned object_base in the new chunk */
+   object_base =
+-    __INT_TO_PTR ((__PTR_TO_INT (new_chunk->contents) + h->alignment_mask)
+-		  & ~ (h->alignment_mask));
++    __PTR_ALIGN ((char *) new_chunk, new_chunk->contents, h->alignment_mask);
+ 
+   /* Move the existing object to the new chunk.
+      Word at a time is fast and is safe if the object
+@@ -331,7 +302,10 @@
+   /* If the object just copied was the only data in OLD_CHUNK,
+      free that chunk and remove it from the chain.
+      But not if that chunk might contain an empty object.  */
+-  if (h->object_base == old_chunk->contents && ! h->maybe_empty_object)
++  if (! h->maybe_empty_object
++      && (h->object_base
++	  == __PTR_ALIGN ((char *) old_chunk, old_chunk->contents,
++			  h->alignment_mask)))
+     {
+       new_chunk->prev = old_chunk->prev;
+       CALL_FREEFUN (h, old_chunk);
+@@ -342,24 +316,20 @@
+   /* The new chunk certainly contains no empty object yet.  */
+   h->maybe_empty_object = 0;
+ }
+-#ifdef _LIBC
++# ifdef _LIBC
+ libc_hidden_def (_obstack_newchunk)
+-#endif
++# endif
+ 
+ /* Return nonzero if object OBJ has been allocated from obstack H.
+    This is here for debugging.
+    If you use it in a program, you are probably losing.  */
+ 
+-# if defined __STDC__ && __STDC__
+ /* Suppress -Wmissing-prototypes warning.  We don't want to declare this in
+    obstack.h because it is just for debugging.  */
+-int _obstack_allocated_p (struct obstack *h, POINTER obj);
+-# endif
++int _obstack_allocated_p (struct obstack *h, void *obj);
+ 
+ int
+-_obstack_allocated_p (h, obj)
+-     struct obstack *h;
+-     POINTER obj;
++_obstack_allocated_p (struct obstack *h, void *obj)
+ {
+   register struct _obstack_chunk *lp;	/* below addr of any objects in this chunk */
+   register struct _obstack_chunk *plp;	/* point to previous chunk if any */
+@@ -368,7 +338,7 @@
+   /* We use >= rather than > since the object cannot be exactly at
+      the beginning of the chunk but might be an empty object exactly
+      at the end of an adjacent chunk.  */
+-  while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
++  while (lp != 0 && ((void *) lp >= obj || (void *) (lp)->limit < obj))
+     {
+       plp = lp->prev;
+       lp = plp;
+@@ -381,13 +351,8 @@
+ 
+ # undef obstack_free
+ 
+-/* This function has two names with identical definitions.
+-   This is the first one, called from non-ANSI code.  */
+-
+ void
+-_obstack_free (h, obj)
+-     struct obstack *h;
+-     POINTER obj;
++obstack_free (struct obstack *h, void *obj)
+ {
+   register struct _obstack_chunk *lp;	/* below addr of any objects in this chunk */
+   register struct _obstack_chunk *plp;	/* point to previous chunk if any */
+@@ -396,7 +361,7 @@
+   /* We use >= because there cannot be an object at the beginning of a chunk.
+      But there can be an empty object at that address
+      at the end of another chunk.  */
+-  while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
++  while (lp != 0 && ((void *) lp >= obj || (void *) (lp)->limit < obj))
+     {
+       plp = lp->prev;
+       CALL_FREEFUN (h, lp);
+@@ -416,48 +381,14 @@
+     abort ();
+ }
+ 
+-/* This function is used from ANSI code.  */
+-
+-#ifdef _LIBC
+-strong_alias (_obstack_free, obstack_free)
+-#else
+-
+-void
+-obstack_free (h, obj)
+-     struct obstack *h;
+-     POINTER obj;
+-{
+-  register struct _obstack_chunk *lp;	/* below addr of any objects in this chunk */
+-  register struct _obstack_chunk *plp;	/* point to previous chunk if any */
+-
+-  lp = h->chunk;
+-  /* We use >= because there cannot be an object at the beginning of a chunk.
+-     But there can be an empty object at that address
+-     at the end of another chunk.  */
+-  while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
+-    {
+-      plp = lp->prev;
+-      CALL_FREEFUN (h, lp);
+-      lp = plp;
+-      /* If we switch chunks, we can't tell whether the new current
+-	 chunk contains an empty object, so assume that it may.  */
+-      h->maybe_empty_object = 1;
+-    }
+-  if (lp)
+-    {
+-      h->object_base = h->next_free = (char *) (obj);
+-      h->chunk_limit = lp->limit;
+-      h->chunk = lp;
+-    }
+-  else if (obj != 0)
+-    /* obj is not in any of the chunks! */
+-    abort ();
+-}
+-#endif
++# ifdef _LIBC
++/* Older versions of libc used a function _obstack_free intended to be
++   called by non-GCC compilers.  */
++strong_alias (obstack_free, _obstack_free)
++# endif
+ 
+ int
+-_obstack_memory_used (h)
+-     struct obstack *h;
++_obstack_memory_used (struct obstack *h)
+ {
+   register struct _obstack_chunk* lp;
+   register int nbytes = 0;
+@@ -470,16 +401,15 @@
+ }
+ 
+ /* Define the error handler.  */
++# ifdef _LIBC
++#  include <libintl.h>
++# else
++#  include "gettext.h"
++# endif
+ # ifndef _
+-#  if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
+-#   include <libintl.h>
+-#   ifndef _
+-#    define _(Str) gettext (Str)
+-#   endif
+-#  else
+-#   define _(Str) (Str)
+-#  endif
++#  define _(msgid) gettext (msgid)
+ # endif
++
+ # ifdef _LIBC
+ #  include <libio/iolibio.h>
+ # endif
+@@ -493,7 +423,7 @@
+ 
+ static void
+ __attribute__ ((noreturn))
+-print_and_abort ()
++print_and_abort (void)
+ {
+   /* Don't change any of these strings.  Yes, it would be possible to add
+      the newline to the string and use fputs or so.  But this must not
+@@ -508,127 +438,5 @@
+     fprintf (stderr, "%s\n", _("memory exhausted"));
+   exit (obstack_exit_failure);
+ }
+-
+-# if 0
+-/* These are now turned off because the applications do not use it
+-   and it uses bcopy via obstack_grow, which causes trouble on sysV.  */
+-
+-/* Now define the functional versions of the obstack macros.
+-   Define them to simply use the corresponding macros to do the job.  */
+-
+-#  if defined __STDC__ && __STDC__
+-/* These function definitions do not work with non-ANSI preprocessors;
+-   they won't pass through the macro names in parentheses.  */
+-
+-/* The function names appear in parentheses in order to prevent
+-   the macro-definitions of the names from being expanded there.  */
+-
+-POINTER (obstack_base) (obstack)
+-     struct obstack *obstack;
+-{
+-  return obstack_base (obstack);
+-}
+-
+-POINTER (obstack_next_free) (obstack)
+-     struct obstack *obstack;
+-{
+-  return obstack_next_free (obstack);
+-}
+-
+-int (obstack_object_size) (obstack)
+-     struct obstack *obstack;
+-{
+-  return obstack_object_size (obstack);
+-}
+-
+-int (obstack_room) (obstack)
+-     struct obstack *obstack;
+-{
+-  return obstack_room (obstack);
+-}
+-
+-int (obstack_make_room) (obstack, length)
+-     struct obstack *obstack;
+-     int length;
+-{
+-  return obstack_make_room (obstack, length);
+-}
+-
+-void (obstack_grow) (obstack, data, length)
+-     struct obstack *obstack;
+-     const POINTER data;
+-     int length;
+-{
+-  obstack_grow (obstack, data, length);
+-}
+-
+-void (obstack_grow0) (obstack, data, length)
+-     struct obstack *obstack;
+-     const POINTER data;
+-     int length;
+-{
+-  obstack_grow0 (obstack, data, length);
+-}
+-
+-void (obstack_1grow) (obstack, character)
+-     struct obstack *obstack;
+-     int character;
+-{
+-  obstack_1grow (obstack, character);
+-}
+-
+-void (obstack_blank) (obstack, length)
+-     struct obstack *obstack;
+-     int length;
+-{
+-  obstack_blank (obstack, length);
+-}
+-
+-void (obstack_1grow_fast) (obstack, character)
+-     struct obstack *obstack;
+-     int character;
+-{
+-  obstack_1grow_fast (obstack, character);
+-}
+-
+-void (obstack_blank_fast) (obstack, length)
+-     struct obstack *obstack;
+-     int length;
+-{
+-  obstack_blank_fast (obstack, length);
+-}
+-
+-POINTER (obstack_finish) (obstack)
+-     struct obstack *obstack;
+-{
+-  return obstack_finish (obstack);
+-}
+-
+-POINTER (obstack_alloc) (obstack, length)
+-     struct obstack *obstack;
+-     int length;
+-{
+-  return obstack_alloc (obstack, length);
+-}
+-
+-POINTER (obstack_copy) (obstack, address, length)
+-     struct obstack *obstack;
+-     const POINTER address;
+-     int length;
+-{
+-  return obstack_copy (obstack, address, length);
+-}
+-
+-POINTER (obstack_copy0) (obstack, address, length)
+-     struct obstack *obstack;
+-     const POINTER address;
+-     int length;
+-{
+-  return obstack_copy0 (obstack, address, length);
+-}
+-
+-#  endif /* __STDC__ */
+-
+-# endif /* 0 */
+ 
+ #endif	/* !ELIDE_CODE */
+diff -ru glibc-2.3.2.27.9.7.orig/malloc/obstack.h glibc-2.3.2.27.9.7/malloc/obstack.h
+--- glibc-2.3.2.27.9.7.orig/malloc/obstack.h	2003-01-04 22:42:30.000000000 +0100
++++ glibc-2.3.2.27.9.7/malloc/obstack.h	2006-10-25 02:59:02.000000000 +0200
+@@ -1,7 +1,7 @@
+ /* obstack.h - object stack macros
+-   Copyright (C) 1988,89,90,91,92,93,94,96,97,98,99 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.  Its master source is NOT part of
+-   the C library, however.  The master source lives in /gd/gnu/lib.
++   Copyright (C) 1988-1994,1996-1999,2003,2004,2005
++	Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+@@ -15,8 +15,8 @@
+ 
+    You should have received a copy of the GNU Lesser General Public
+    License along with the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-   02111-1307 USA.  */
++   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
+ 
+ /* Summary:
+ 
+@@ -110,49 +110,36 @@
+ extern "C" {
+ #endif
+ 
+-/* We use subtraction of (char *) 0 instead of casting to int
+-   because on word-addressable machines a simple cast to int
+-   may ignore the byte-within-word field of the pointer.  */
+-
+-#ifndef __PTR_TO_INT
+-# define __PTR_TO_INT(P) ((P) - (char *) 0)
+-#endif
+-
+-#ifndef __INT_TO_PTR
+-#if defined __STDC__ && __STDC__
+-# define __INT_TO_PTR(P) ((void *) ((P) + (char *) 0))
+-#else
+-# define __INT_TO_PTR(P) ((P) + (char *) 0)
+-#endif
+-#endif
+-
+-/* We need the type of the resulting object.  If __PTRDIFF_TYPE__ is
++/* We need the type of a pointer subtraction.  If __PTRDIFF_TYPE__ is
+    defined, as with GNU C, use that; that way we don't pollute the
+-   namespace with <stddef.h>'s symbols.  Otherwise, if <stddef.h> is
+-   available, include it and use ptrdiff_t.  In traditional C, long is
+-   the best that we can do.  */
++   namespace with <stddef.h>'s symbols.  Otherwise, include <stddef.h>
++   and use ptrdiff_t.  */
+ 
+ #ifdef __PTRDIFF_TYPE__
+ # define PTR_INT_TYPE __PTRDIFF_TYPE__
+ #else
+-# ifdef HAVE_STDDEF_H
+-#  include <stddef.h>
+-#  define PTR_INT_TYPE ptrdiff_t
+-# else
+-#  define PTR_INT_TYPE long
+-# endif
++# include <stddef.h>
++# define PTR_INT_TYPE ptrdiff_t
+ #endif
+ 
+-#if defined _LIBC || defined HAVE_STRING_H
+-# include <string.h>
+-# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+-#else
+-# ifdef memcpy
+-#  define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
+-# else
+-#  define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
+-# endif
+-#endif
++/* If B is the base of an object addressed by P, return the result of
++   aligning P to the next multiple of A + 1.  B and P must be of type
++   char *.  A + 1 must be a power of 2.  */
++
++#define __BPTR_ALIGN(B, P, A) ((B) + (((P) - (B) + (A)) & ~(A)))
++
++/* Similiar to _BPTR_ALIGN (B, P, A), except optimize the common case
++   where pointers can be converted to integers, aligned as integers,
++   and converted back again.  If PTR_INT_TYPE is narrower than a
++   pointer (e.g., the AS/400), play it safe and compute the alignment
++   relative to B.  Otherwise, use the faster strategy of computing the
++   alignment relative to 0.  */
++
++#define __PTR_ALIGN(B, P, A)						    \
++  __BPTR_ALIGN (sizeof (PTR_INT_TYPE) < sizeof (void *) ? (B) : (char *) 0, \
++		P, A)
++
++#include <string.h>
+ 
+ struct _obstack_chunk		/* Lives at front of each chunk. */
+ {
+@@ -168,20 +155,18 @@
+   char	*object_base;		/* address of object we are building */
+   char	*next_free;		/* where to add next char to current object */
+   char	*chunk_limit;		/* address of char after current chunk */
+-  PTR_INT_TYPE temp;		/* Temporary for some macros.  */
++  union
++  {
++    PTR_INT_TYPE tempint;
++    void *tempptr;
++  } temp;			/* Temporary for some macros.  */
+   int   alignment_mask;		/* Mask of alignment for each object. */
+-#if defined __STDC__ && __STDC__
+   /* These prototypes vary based on `use_extra_arg', and we use
+      casts to the prototypeless function type in all assignments,
+      but having prototypes here quiets -Wstrict-prototypes.  */
+   struct _obstack_chunk *(*chunkfun) (void *, long);
+   void (*freefun) (void *, struct _obstack_chunk *);
+   void *extra_arg;		/* first arg for chunk alloc/dealloc funcs */
+-#else
+-  struct _obstack_chunk *(*chunkfun) (); /* User's fcn to allocate a chunk.  */
+-  void (*freefun) ();		/* User's function to free a chunk.  */
+-  char *extra_arg;		/* first arg for chunk alloc/dealloc funcs */
+-#endif
+   unsigned use_extra_arg:1;	/* chunk alloc/dealloc funcs take extra arg */
+   unsigned maybe_empty_object:1;/* There is a possibility that the current
+ 				   chunk contains a zero-length object.  This
+@@ -194,77 +179,22 @@
+ 
+ /* Declare the external functions we use; they are in obstack.c.  */
+ 
+-#if defined __STDC__ && __STDC__
+ extern void _obstack_newchunk (struct obstack *, int);
+-extern void _obstack_free (struct obstack *, void *);
+ extern int _obstack_begin (struct obstack *, int, int,
+ 			    void *(*) (long), void (*) (void *));
+ extern int _obstack_begin_1 (struct obstack *, int, int,
+ 			     void *(*) (void *, long),
+ 			     void (*) (void *, void *), void *);
+ extern int _obstack_memory_used (struct obstack *);
+-#else
+-extern void _obstack_newchunk ();
+-extern void _obstack_free ();
+-extern int _obstack_begin ();
+-extern int _obstack_begin_1 ();
+-extern int _obstack_memory_used ();
+-#endif
+-
+-#if defined __STDC__ && __STDC__
+-
+-/* Do the function-declarations after the structs
+-   but before defining the macros.  */
+-
+-void obstack_init (struct obstack *obstack);
+-
+-void * obstack_alloc (struct obstack *obstack, int size);
+-
+-void * obstack_copy (struct obstack *obstack, const void *address, int size);
+-void * obstack_copy0 (struct obstack *obstack, const void *address, int size);
+ 
+ void obstack_free (struct obstack *obstack, void *block);
+ 
+-void obstack_blank (struct obstack *obstack, int size);
+-
+-void obstack_grow (struct obstack *obstack, const void *data, int size);
+-void obstack_grow0 (struct obstack *obstack, const void *data, int size);
+-
+-void obstack_1grow (struct obstack *obstack, int data_char);
+-void obstack_ptr_grow (struct obstack *obstack, const void *data);
+-void obstack_int_grow (struct obstack *obstack, int data);
+-
+-void * obstack_finish (struct obstack *obstack);
+-
+-int obstack_object_size (struct obstack *obstack);
+-
+-int obstack_room (struct obstack *obstack);
+-void obstack_make_room (struct obstack *obstack, int size);
+-void obstack_1grow_fast (struct obstack *obstack, int data_char);
+-void obstack_ptr_grow_fast (struct obstack *obstack, const void *data);
+-void obstack_int_grow_fast (struct obstack *obstack, int data);
+-void obstack_blank_fast (struct obstack *obstack, int size);
+-
+-void * obstack_base (struct obstack *obstack);
+-void * obstack_next_free (struct obstack *obstack);
+-int obstack_alignment_mask (struct obstack *obstack);
+-int obstack_chunk_size (struct obstack *obstack);
+-int obstack_memory_used (struct obstack *obstack);
+-
+-#endif /* __STDC__ */
+-
+-/* Non-ANSI C cannot really support alternative functions for these macros,
+-   so we do not declare them.  */
+-
++
+ /* Error handler called when `obstack_chunk_alloc' failed to allocate
+    more memory.  This can be set to a user defined function which
+    should either abort gracefully or use longjump - but shouldn't
+    return.  The default action is to print a message and abort.  */
+-#if defined __STDC__ && __STDC__
+ extern void (*obstack_alloc_failed_handler) (void);
+-#else
+-extern void (*obstack_alloc_failed_handler) ();
+-#endif
+ 
+ /* Exit value used when `print_and_abort' is used.  */
+ extern int obstack_exit_failure;
+@@ -273,7 +203,7 @@
+    Note that this might not be the final address of the object
+    because a new chunk might be needed to hold the final size.  */
+ 
+-#define obstack_base(h) ((h)->object_base)
++#define obstack_base(h) ((void *) (h)->object_base)
+ 
+ /* Size for allocating ordinary chunks.  */
+ 
+@@ -287,67 +217,34 @@
+ 
+ #define obstack_alignment_mask(h) ((h)->alignment_mask)
+ 
+-/* To prevent prototype warnings provide complete argument list in
+-   standard C version.  */
+-#if defined __STDC__ && __STDC__
+-
+-# define obstack_init(h)					\
++/* To prevent prototype warnings provide complete argument list.  */
++#define obstack_init(h)						\
+   _obstack_begin ((h), 0, 0,					\
+-		  (void *(*) (long)) obstack_chunk_alloc, 	\
++		  (void *(*) (long)) obstack_chunk_alloc,	\
+ 		  (void (*) (void *)) obstack_chunk_free)
+ 
+-# define obstack_begin(h, size)					\
++#define obstack_begin(h, size)					\
+   _obstack_begin ((h), (size), 0,				\
+-		  (void *(*) (long)) obstack_chunk_alloc, 	\
++		  (void *(*) (long)) obstack_chunk_alloc,	\
+ 		  (void (*) (void *)) obstack_chunk_free)
+ 
+-# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
++#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun)  \
+   _obstack_begin ((h), (size), (alignment),				   \
+-		  (void *(*) (long)) (chunkfun), 			   \
++		  (void *(*) (long)) (chunkfun),			   \
+ 		  (void (*) (void *)) (freefun))
+ 
+-# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
++#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
+   _obstack_begin_1 ((h), (size), (alignment),				\
+ 		    (void *(*) (void *, long)) (chunkfun),		\
+ 		    (void (*) (void *, void *)) (freefun), (arg))
+ 
+-# define obstack_chunkfun(h, newchunkfun) \
++#define obstack_chunkfun(h, newchunkfun) \
+   ((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
+ 
+-# define obstack_freefun(h, newfreefun) \
++#define obstack_freefun(h, newfreefun) \
+   ((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
+ 
+-#else
+-
+-# define obstack_init(h)						\
+-  _obstack_begin ((h), 0, 0,						\
+-		  (void *(*) ()) obstack_chunk_alloc, 			\
+-		  (void (*) ()) obstack_chunk_free)
+-
+-# define obstack_begin(h, size)						\
+-  _obstack_begin ((h), (size), 0,					\
+-		  (void *(*) ()) obstack_chunk_alloc,			\
+-		  (void (*) ()) obstack_chunk_free)
+-
+-# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
+-  _obstack_begin ((h), (size), (alignment),				   \
+-		  (void *(*) ()) (chunkfun), 				   \
+-		  (void (*) ()) (freefun))
+-
+-# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
+-  _obstack_begin_1 ((h), (size), (alignment),				\
+-		    (void *(*) ()) (chunkfun), 				\
+-		    (void (*) ()) (freefun), (arg))
+-
+-# define obstack_chunkfun(h, newchunkfun) \
+-  ((h) -> chunkfun = (struct _obstack_chunk *(*)()) (newchunkfun))
+-
+-# define obstack_freefun(h, newfreefun) \
+-  ((h) -> freefun = (void (*)()) (newfreefun))
+-
+-#endif
+-
+-#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
++#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar))
+ 
+ #define obstack_blank_fast(h,n) ((h)->next_free += (n))
+ 
+@@ -368,12 +265,12 @@
+ 
+ # define obstack_object_size(OBSTACK)					\
+   __extension__								\
+-  ({ struct obstack *__o = (OBSTACK);					\
++  ({ struct obstack const *__o = (OBSTACK);				\
+      (unsigned) (__o->next_free - __o->object_base); })
+ 
+ # define obstack_room(OBSTACK)						\
+   __extension__								\
+-  ({ struct obstack *__o = (OBSTACK);					\
++  ({ struct obstack const *__o = (OBSTACK);				\
+      (unsigned) (__o->chunk_limit - __o->next_free); })
+ 
+ # define obstack_make_room(OBSTACK,length)				\
+@@ -386,8 +283,11 @@
+ 
+ # define obstack_empty_p(OBSTACK)					\
+   __extension__								\
+-  ({ struct obstack *__o = (OBSTACK);					\
+-     (__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
++  ({ struct obstack const *__o = (OBSTACK);				\
++     (__o->chunk->prev == 0						\
++      && __o->next_free == __PTR_ALIGN ((char *) __o->chunk,		\
++					__o->chunk->contents,		\
++					__o->alignment_mask)); })
+ 
+ # define obstack_grow(OBSTACK,where,length)				\
+ __extension__								\
+@@ -395,7 +295,7 @@
+    int __len = (length);						\
+    if (__o->next_free + __len > __o->chunk_limit)			\
+      _obstack_newchunk (__o, __len);					\
+-   _obstack_memcpy (__o->next_free, (where), __len);			\
++   memcpy (__o->next_free, where, __len);				\
+    __o->next_free += __len;						\
+    (void) 0; })
+ 
+@@ -405,7 +305,7 @@
+    int __len = (length);						\
+    if (__o->next_free + __len + 1 > __o->chunk_limit)			\
+      _obstack_newchunk (__o, __len + 1);				\
+-   _obstack_memcpy (__o->next_free, (where), __len);			\
++   memcpy (__o->next_free, where, __len);				\
+    __o->next_free += __len;						\
+    *(__o->next_free)++ = 0;						\
+    (void) 0; })
+@@ -415,7 +315,7 @@
+ ({ struct obstack *__o = (OBSTACK);					\
+    if (__o->next_free + 1 > __o->chunk_limit)				\
+      _obstack_newchunk (__o, 1);					\
+-   *(__o->next_free)++ = (datum);					\
++   obstack_1grow_fast (__o, datum);					\
+    (void) 0; })
+ 
+ /* These assume that the obstack alignment is good enough for pointers
+@@ -427,22 +327,28 @@
+ ({ struct obstack *__o = (OBSTACK);					\
+    if (__o->next_free + sizeof (void *) > __o->chunk_limit)		\
+      _obstack_newchunk (__o, sizeof (void *));				\
+-   *((void **)__o->next_free)++ = (datum);				\
+-   (void) 0; })
++   obstack_ptr_grow_fast (__o, datum); })				\
+ 
+ # define obstack_int_grow(OBSTACK,datum)				\
+ __extension__								\
+ ({ struct obstack *__o = (OBSTACK);					\
+    if (__o->next_free + sizeof (int) > __o->chunk_limit)		\
+      _obstack_newchunk (__o, sizeof (int));				\
+-   *((int *)__o->next_free)++ = (datum);				\
+-   (void) 0; })
++   obstack_int_grow_fast (__o, datum); })
+ 
+-# define obstack_ptr_grow_fast(h,aptr)					\
+-  (*((void **) (h)->next_free)++ = (aptr))
++# define obstack_ptr_grow_fast(OBSTACK,aptr)				\
++__extension__								\
++({ struct obstack *__o1 = (OBSTACK);					\
++   *(const void **) __o1->next_free = (aptr);				\
++   __o1->next_free += sizeof (const void *);				\
++   (void) 0; })
+ 
+-# define obstack_int_grow_fast(h,aint)					\
+-  (*((int *) (h)->next_free)++ = (aint))
++# define obstack_int_grow_fast(OBSTACK,aint)				\
++__extension__								\
++({ struct obstack *__o1 = (OBSTACK);					\
++   *(int *) __o1->next_free = (aint);					\
++   __o1->next_free += sizeof (int);					\
++   (void) 0; })
+ 
+ # define obstack_blank(OBSTACK,length)					\
+ __extension__								\
+@@ -450,7 +356,7 @@
+    int __len = (length);						\
+    if (__o->chunk_limit - __o->next_free < __len)			\
+      _obstack_newchunk (__o, __len);					\
+-   __o->next_free += __len;						\
++   obstack_blank_fast (__o, __len);					\
+    (void) 0; })
+ 
+ # define obstack_alloc(OBSTACK,length)					\
+@@ -473,21 +379,20 @@
+ 
+ /* The local variable is named __o1 to avoid a name conflict
+    when obstack_blank is called.  */
+-# define obstack_finish(OBSTACK)  					\
++# define obstack_finish(OBSTACK)					\
+ __extension__								\
+ ({ struct obstack *__o1 = (OBSTACK);					\
+-   void *value;								\
+-   value = (void *) __o1->object_base;					\
+-   if (__o1->next_free == value)					\
++   void *__value = (void *) __o1->object_base;				\
++   if (__o1->next_free == __value)					\
+      __o1->maybe_empty_object = 1;					\
+    __o1->next_free							\
+-     = __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
+-		     & ~ (__o1->alignment_mask));			\
++     = __PTR_ALIGN (__o1->object_base, __o1->next_free,			\
++		    __o1->alignment_mask);				\
+    if (__o1->next_free - (char *)__o1->chunk				\
+        > __o1->chunk_limit - (char *)__o1->chunk)			\
+      __o1->next_free = __o1->chunk_limit;				\
+    __o1->object_base = __o1->next_free;					\
+-   value; })
++   __value; })
+ 
+ # define obstack_free(OBSTACK, OBJ)					\
+ __extension__								\
+@@ -506,7 +411,10 @@
+  (unsigned) ((h)->chunk_limit - (h)->next_free)
+ 
+ # define obstack_empty_p(h) \
+- ((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
++ ((h)->chunk->prev == 0							\
++  && (h)->next_free == __PTR_ALIGN ((char *) (h)->chunk,		\
++				    (h)->chunk->contents,		\
++				    (h)->alignment_mask))
+ 
+ /* Note that the call to _obstack_newchunk is enclosed in (..., 0)
+    so that we can avoid having void expressions
+@@ -515,51 +423,51 @@
+    but some compilers won't accept it.  */
+ 
+ # define obstack_make_room(h,length)					\
+-( (h)->temp = (length),							\
+-  (((h)->next_free + (h)->temp > (h)->chunk_limit)			\
+-   ? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
++( (h)->temp.tempint = (length),						\
++  (((h)->next_free + (h)->temp.tempint > (h)->chunk_limit)		\
++   ? (_obstack_newchunk ((h), (h)->temp.tempint), 0) : 0))
+ 
+ # define obstack_grow(h,where,length)					\
+-( (h)->temp = (length),							\
+-  (((h)->next_free + (h)->temp > (h)->chunk_limit)			\
+-   ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),			\
+-  _obstack_memcpy ((h)->next_free, (where), (h)->temp),			\
+-  (h)->next_free += (h)->temp)
++( (h)->temp.tempint = (length),						\
++  (((h)->next_free + (h)->temp.tempint > (h)->chunk_limit)		\
++   ? (_obstack_newchunk ((h), (h)->temp.tempint), 0) : 0),		\
++  memcpy ((h)->next_free, where, (h)->temp.tempint),			\
++  (h)->next_free += (h)->temp.tempint)
+ 
+ # define obstack_grow0(h,where,length)					\
+-( (h)->temp = (length),							\
+-  (((h)->next_free + (h)->temp + 1 > (h)->chunk_limit)			\
+-   ? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0),			\
+-  _obstack_memcpy ((h)->next_free, (where), (h)->temp),			\
+-  (h)->next_free += (h)->temp,						\
++( (h)->temp.tempint = (length),						\
++  (((h)->next_free + (h)->temp.tempint + 1 > (h)->chunk_limit)		\
++   ? (_obstack_newchunk ((h), (h)->temp.tempint + 1), 0) : 0),		\
++  memcpy ((h)->next_free, where, (h)->temp.tempint),			\
++  (h)->next_free += (h)->temp.tempint,					\
+   *((h)->next_free)++ = 0)
+ 
+ # define obstack_1grow(h,datum)						\
+ ( (((h)->next_free + 1 > (h)->chunk_limit)				\
+    ? (_obstack_newchunk ((h), 1), 0) : 0),				\
+-  (*((h)->next_free)++ = (datum)))
++  obstack_1grow_fast (h, datum))
+ 
+ # define obstack_ptr_grow(h,datum)					\
+ ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit)		\
+    ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0),		\
+-  (*((const char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = (datum)))
++  obstack_ptr_grow_fast (h, datum))
+ 
+ # define obstack_int_grow(h,datum)					\
+ ( (((h)->next_free + sizeof (int) > (h)->chunk_limit)			\
+    ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0),			\
+-  (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = (datum)))
++  obstack_int_grow_fast (h, datum))
+ 
+ # define obstack_ptr_grow_fast(h,aptr)					\
+-  (*((const char **) (h)->next_free)++ = (aptr))
++  (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
+ 
+ # define obstack_int_grow_fast(h,aint)					\
+-  (*((int *) (h)->next_free)++ = (aint))
++  (((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
+ 
+ # define obstack_blank(h,length)					\
+-( (h)->temp = (length),							\
+-  (((h)->chunk_limit - (h)->next_free < (h)->temp)			\
+-   ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),			\
+-  ((h)->next_free += (h)->temp))
++( (h)->temp.tempint = (length),						\
++  (((h)->chunk_limit - (h)->next_free < (h)->temp.tempint)		\
++   ? (_obstack_newchunk ((h), (h)->temp.tempint), 0) : 0),		\
++  obstack_blank_fast (h, (h)->temp.tempint))
+ 
+ # define obstack_alloc(h,length)					\
+  (obstack_blank ((h), (length)), obstack_finish ((h)))
+@@ -570,35 +478,27 @@
+ # define obstack_copy0(h,where,length)					\
+  (obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
+ 
+-# define obstack_finish(h)  						\
++# define obstack_finish(h)						\
+ ( ((h)->next_free == (h)->object_base					\
+    ? (((h)->maybe_empty_object = 1), 0)					\
+    : 0),								\
+-  (h)->temp = __PTR_TO_INT ((h)->object_base),				\
++  (h)->temp.tempptr = (h)->object_base,					\
+   (h)->next_free							\
+-    = __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask)	\
+-		    & ~ ((h)->alignment_mask)),				\
++    = __PTR_ALIGN ((h)->object_base, (h)->next_free,			\
++		   (h)->alignment_mask),				\
+   (((h)->next_free - (char *) (h)->chunk				\
+     > (h)->chunk_limit - (char *) (h)->chunk)				\
+    ? ((h)->next_free = (h)->chunk_limit) : 0),				\
+   (h)->object_base = (h)->next_free,					\
+-  __INT_TO_PTR ((h)->temp))
++  (h)->temp.tempptr)
+ 
+-# if defined __STDC__ && __STDC__
+-#  define obstack_free(h,obj)						\
+-( (h)->temp = (char *) (obj) - (char *) (h)->chunk,			\
+-  (((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
+-   ? (int) ((h)->next_free = (h)->object_base				\
+-	    = (h)->temp + (char *) (h)->chunk)				\
+-   : (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
+-# else
+-#  define obstack_free(h,obj)						\
+-( (h)->temp = (char *) (obj) - (char *) (h)->chunk,			\
+-  (((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
++# define obstack_free(h,obj)						\
++( (h)->temp.tempint = (char *) (obj) - (char *) (h)->chunk,		\
++  ((((h)->temp.tempint > 0						\
++    && (h)->temp.tempint < (h)->chunk_limit - (char *) (h)->chunk))	\
+    ? (int) ((h)->next_free = (h)->object_base				\
+-	    = (h)->temp + (char *) (h)->chunk)				\
+-   : (_obstack_free ((h), (h)->temp + (char *) (h)->chunk), 0)))
+-# endif
++	    = (h)->temp.tempint + (char *) (h)->chunk)			\
++   : (((obstack_free) ((h), (h)->temp.tempint + (char *) (h)->chunk), 0), 0)))
+ 
+ #endif /* not __GNUC__ or not __STDC__ */
+ 
+diff -ru glibc-2.3.2.27.9.7.orig/posix/regcomp.c glibc-2.3.2.27.9.7/posix/regcomp.c
+--- glibc-2.3.2.27.9.7.orig/posix/regcomp.c	2003-02-21 02:21:03.000000000 +0100
++++ glibc-2.3.2.27.9.7/posix/regcomp.c	2006-10-25 00:28:35.000000000 +0200
+@@ -2511,7 +2511,8 @@
+      Seek the collating symbol entry correspondings to NAME.
+      Return the index of the symbol in the SYMB_TABLE.  */
+ 
+-  static inline int32_t
++  auto inline int32_t
++    __attribute ((always_inline))
+   seek_collating_symbol_entry (name, name_len)
+ 	 const unsigned char *name;
+ 	 size_t name_len;
+@@ -2543,7 +2544,8 @@
+      Look up the collation sequence value of BR_ELEM.
+      Return the value if succeeded, UINT_MAX otherwise.  */
+ 
+-  static inline unsigned int
++  auto inline unsigned int
++    __attribute ((always_inline))
+   lookup_collation_sequence_value (br_elem)
+ 	 bracket_elem_t *br_elem;
+     {
+@@ -2610,7 +2612,8 @@
+      mbcset->range_ends, is a pointer argument sinse we may
+      update it.  */
+ 
+-  static inline reg_errcode_t
++  auto inline reg_errcode_t
++  __attribute ((always_inline))
+ # ifdef RE_ENABLE_I18N
+   build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
+ 	 re_charset_t *mbcset;
+@@ -2696,7 +2699,8 @@
+      COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
+      pointer argument sinse we may update it.  */
+ 
+-  static inline reg_errcode_t
++  auto inline reg_errcode_t
++  __attribute ((always_inline))
+ # ifdef RE_ENABLE_I18N
+   build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
+ 	 re_charset_t *mbcset;
+diff -ru glibc-2.3.2.27.9.7.orig/stdlib/msort.c glibc-2.3.2.27.9.7/stdlib/msort.c
+--- glibc-2.3.2.27.9.7.orig/stdlib/msort.c	2002-09-24 06:20:57.000000000 +0200
++++ glibc-2.3.2.27.9.7/stdlib/msort.c	2006-10-24 23:14:30.000000000 +0200
+@@ -1,6 +1,6 @@
+ /* An alternative to qsort, with an identical interface.
+    This file is part of the GNU C Library.
+-   Copyright (C) 1992,95-97,99,2000,01,02 Free Software Foundation, Inc.
++   Copyright (C) 1992,95-97,99,2000,01,02,04 Free Software Foundation, Inc.
+    Written by Mike Haertel, September 1988.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -56,12 +56,16 @@
+ 	if ((*cmp) (b1, b2) <= 0)
+ 	  {
+ 	    --n1;
+-	    *((op_t *) tmp)++ = *((op_t *) b1)++;
++	    *((op_t *) tmp) = *((op_t *) b1);
++	    tmp += sizeof (op_t);
++	    b1 += sizeof (op_t);
+ 	  }
+ 	else
+ 	  {
+ 	    --n2;
+-	    *((op_t *) tmp)++ = *((op_t *) b2)++;
++	    *((op_t *) tmp) = *((op_t *) b2);
++	    tmp += sizeof (op_t);
++	    b2 += sizeof (op_t);
+ 	  }
+       }
+   else
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/clnt_perr.c glibc-2.3.2.27.9.7/sunrpc/clnt_perr.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/clnt_perr.c	2002-11-01 21:43:54.000000000 +0100
++++ glibc-2.3.2.27.9.7/sunrpc/clnt_perr.c	2006-10-25 00:34:25.000000000 +0200
+@@ -55,7 +55,7 @@
+  * buf variable in a few functions.  Overriding a global variable
+  * with a local variable of the same name is a bad idea, anyway.
+  */
+-#define buf ((char *)RPC_THREAD_VARIABLE(clnt_perr_buf_s))
++#define buf RPC_THREAD_VARIABLE(clnt_perr_buf_s)
+ #else
+ static char *buf;
+ #endif
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/clnt_raw.c glibc-2.3.2.27.9.7/sunrpc/clnt_raw.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/clnt_raw.c	2002-05-15 02:21:00.000000000 +0200
++++ glibc-2.3.2.27.9.7/sunrpc/clnt_raw.c	2006-10-25 00:36:36.000000000 +0200
+@@ -61,7 +61,7 @@
+     u_int mcnt;
+   };
+ #ifdef _RPC_THREAD_SAFE_
+-#define clntraw_private ((struct clntraw_private_s *)RPC_THREAD_VARIABLE(clntraw_private_s))
++#define clntraw_private RPC_THREAD_VARIABLE(clntraw_private_s)
+ #else
+ static struct clntraw_private_s *clntraw_private;
+ #endif
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/clnt_simp.c glibc-2.3.2.27.9.7/sunrpc/clnt_simp.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/clnt_simp.c	2002-05-15 02:21:00.000000000 +0200
++++ glibc-2.3.2.27.9.7/sunrpc/clnt_simp.c	2006-10-25 00:37:57.000000000 +0200
+@@ -55,7 +55,7 @@
+     char *oldhost;
+   };
+ #ifdef _RPC_THREAD_SAFE_
+-#define callrpc_private ((struct callrpc_private_s *)RPC_THREAD_VARIABLE(callrpc_private_s))
++#define callrpc_private RPC_THREAD_VARIABLE(callrpc_private_s)
+ #else
+ static struct callrpc_private_s *callrpc_private;
+ #endif
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/key_call.c glibc-2.3.2.27.9.7/sunrpc/key_call.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/key_call.c	2002-08-06 08:08:50.000000000 +0200
++++ glibc-2.3.2.27.9.7/sunrpc/key_call.c	2006-10-25 01:06:18.000000000 +0200
+@@ -370,7 +370,7 @@
+   uid_t   uid;            /* user-id at last authorization */
+ };
+ #ifdef _RPC_THREAD_SAFE_
+-#define key_call_private_main ((struct  key_call_private *)RPC_THREAD_VARIABLE(key_call_private_s))
++#define key_call_private_main RPC_THREAD_VARIABLE(key_call_private_s)
+ #else
+ static struct key_call_private *key_call_private_main;
+ #endif
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/rpc/xdr.h glibc-2.3.2.27.9.7/sunrpc/rpc/xdr.h
+--- glibc-2.3.2.27.9.7.orig/sunrpc/rpc/xdr.h	2002-12-16 03:05:49.000000000 +0100
++++ glibc-2.3.2.27.9.7/sunrpc/rpc/xdr.h	2006-10-25 00:42:41.000000000 +0200
+@@ -262,12 +262,10 @@
+  * and shouldn't be used any longer. Code which use this defines or longs
+  * in the RPC code will not work on 64bit Solaris platforms !
+  */
+-#define IXDR_GET_LONG(buf) \
+-	((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))
+-#define IXDR_PUT_LONG(buf, v) \
+-	(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))
+-#define IXDR_GET_U_LONG(buf)	      ((u_long)IXDR_GET_LONG(buf))
+-#define IXDR_PUT_U_LONG(buf, v)	      IXDR_PUT_LONG(buf, (long)(v))
++#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))
++#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))
++#define IXDR_GET_U_LONG(buf)          ((u_long)IXDR_GET_LONG(buf))
++#define IXDR_PUT_U_LONG(buf, v)       IXDR_PUT_LONG(buf, (long)(v))
+ 
+ 
+ #define IXDR_GET_BOOL(buf)            ((bool_t)IXDR_GET_LONG(buf))
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/svcauth_des.c glibc-2.3.2.27.9.7/sunrpc/svcauth_des.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/svcauth_des.c	2001-08-20 08:37:09.000000000 +0200
++++ glibc-2.3.2.27.9.7/sunrpc/svcauth_des.c	2006-10-25 01:11:54.000000000 +0200
+@@ -72,8 +72,8 @@
+     char *localcred;		/* generic local credential */
+   };
+ #ifdef _RPC_THREAD_SAFE_
+-#define authdes_cache ((struct cache_entry *)RPC_THREAD_VARIABLE(authdes_cache_s))
+-#define authdes_lru ((int *)RPC_THREAD_VARIABLE(authdes_lru_s))
++#define authdes_cache RPC_THREAD_VARIABLE(authdes_cache_s)
++#define authdes_lru RPC_THREAD_VARIABLE(authdes_lru_s)
+ #else
+ static struct cache_entry *authdes_cache;
+ static int *authdes_lru;
+@@ -211,9 +211,9 @@
+ 
+       /* XXX This could be wrong, but else we have a
+ 	 security problem */
+-      if (authdes_cache[sid].rname == NULL)
++      if (((struct cache_entry *)authdes_cache)[sid].rname == NULL)
+ 	return AUTH_BADCRED;
+-      sessionkey = &authdes_cache[sid].key;
++      sessionkey = &((struct cache_entry *)authdes_cache)[sid].key;
+     }
+ 
+ 
+@@ -281,7 +281,7 @@
+       }
+     else
+       {				/* ADN_NICKNAME */
+-	window = authdes_cache[sid].window;
++	window = ((struct cache_entry *)authdes_cache)[sid].window;
+ 	nick = 1;
+       }
+ 
+@@ -291,7 +291,7 @@
+ 	/* cached out (bad key), or garbled verifier */
+ 	return nick ? AUTH_REJECTEDVERF : AUTH_BADVERF;
+       }
+-    if (nick && BEFORE (&timestamp, &authdes_cache[sid].laststamp))
++    if (nick && BEFORE (&timestamp, &((struct cache_entry *)authdes_cache)[sid].laststamp))
+       {
+ 	debug ("timestamp before last seen");
+ 	return AUTH_REJECTEDVERF;	/* replay */
+@@ -347,7 +347,7 @@
+    * We succeeded, commit the data to the cache now and
+    * finish cooking the credential.
+    */
+-  entry = &authdes_cache[sid];
++  entry = &((struct cache_entry *)authdes_cache)[sid];
+   entry->laststamp = timestamp;
+   cache_ref (sid);
+   if (cred->adc_namekind == ADN_FULLNAME)
+@@ -406,7 +406,7 @@
+    * Initialize the lru list
+    */
+   for (i = 0; i < AUTHDES_CACHESZ; ++i)
+-    authdes_lru[i] = i;
++    ((int *)authdes_lru)[i] = i;
+ }
+ 
+ 
+@@ -416,7 +416,7 @@
+ static short
+ cache_victim (void)
+ {
+-  return authdes_lru[AUTHDES_CACHESZ - 1];
++  return ((int *)authdes_lru)[AUTHDES_CACHESZ - 1];
+ }
+ 
+ /*
+@@ -430,12 +430,12 @@
+   register int curr;
+   register int prev;
+ 
+-  prev = authdes_lru[0];
+-  authdes_lru[0] = sid;
++  prev = ((int *)authdes_lru)[0];
++  ((int *)authdes_lru)[0] = sid;
+   for (i = 1; prev != sid; ++i)
+     {
+-      curr = authdes_lru[i];
+-      authdes_lru[i] = prev;
++      curr = ((int *)authdes_lru)[i];
++      ((int *)authdes_lru)[i] = prev;
+       prev = curr;
+     }
+ }
+@@ -514,11 +514,11 @@
+       debug ("invalid nickname");
+       return 0;
+     }
+-  cred = (struct bsdcred *) authdes_cache[sid].localcred;
++  cred = (struct bsdcred *) ((struct cache_entry *)authdes_cache)[sid].localcred;
+   if (cred == NULL)
+     {
+       cred = (struct bsdcred *) mem_alloc (sizeof (struct bsdcred));
+-      authdes_cache[sid].localcred = (char *) cred;
++      ((struct cache_entry *)authdes_cache)[sid].localcred = (char *) cred;
+       cred->grouplen = INVALID;
+     }
+   if (cred->grouplen == INVALID)
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/svc.c glibc-2.3.2.27.9.7/sunrpc/svc.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/svc.c	2002-08-06 07:10:30.000000000 +0200
++++ glibc-2.3.2.27.9.7/sunrpc/svc.c	2006-10-25 01:03:37.000000000 +0200
+@@ -44,7 +44,7 @@
+ #include <sys/poll.h>
+ 
+ #ifdef _RPC_THREAD_SAFE_
+-#define xports ((SVCXPRT **)RPC_THREAD_VARIABLE(svc_xports_s))
++#define xports RPC_THREAD_VARIABLE(svc_xports_s)
+ #else
+ static SVCXPRT **xports;
+ #endif
+@@ -63,7 +63,7 @@
+   void (*sc_dispatch) (struct svc_req *, SVCXPRT *);
+ };
+ #ifdef _RPC_THREAD_SAFE_
+-#define svc_head ((struct svc_callout *)RPC_THREAD_VARIABLE(svc_head_s))
++#define svc_head RPC_THREAD_VARIABLE(svc_head_s)
+ #else
+ static struct svc_callout *svc_head;
+ #endif
+@@ -88,7 +88,7 @@
+     {
+       struct pollfd *new_svc_pollfd;
+ 
+-      xports[sock] = xprt;
++      ((SVCXPRT **)xports)[sock] = xprt;
+       if (sock < FD_SETSIZE)
+ 	FD_SET (sock, &svc_fdset);
+ 
+@@ -124,9 +124,9 @@
+   register int sock = xprt->xp_sock;
+   register int i;
+ 
+-  if ((sock < _rpc_dtablesize ()) && (xports[sock] == xprt))
++  if ((sock < _rpc_dtablesize ()) && (((SVCXPRT **)xports)[sock] == xprt))
+     {
+-      xports[sock] = (SVCXPRT *) 0;
++      ((SVCXPRT **)xports)[sock] = (SVCXPRT *) 0;
+ 
+       if (sock < FD_SETSIZE)
+ 	FD_CLR (sock, &svc_fdset);
+@@ -391,7 +391,7 @@
+ 	  ++fds_found;
+ 
+ 	  if (p->revents & POLLNVAL)
+-	    xprt_unregister (xports[p->fd]);
++	    xprt_unregister (((SVCXPRT **)xports)[p->fd]);
+ 	  else
+ 	    INTUSE(svc_getreq_common) (p->fd);
+ 	}
+@@ -410,7 +410,7 @@
+   msg.rm_call.cb_cred.oa_base = cred_area;
+   msg.rm_call.cb_verf.oa_base = &(cred_area[MAX_AUTH_BYTES]);
+ 
+-  xprt = xports[fd];
++  xprt = ((SVCXPRT **)xports)[fd];
+   /* Do we control fd? */
+   if (xprt == NULL)
+      return;
+diff -ru glibc-2.3.2.27.9.7.orig/sunrpc/svc_simple.c glibc-2.3.2.27.9.7/sunrpc/svc_simple.c
+--- glibc-2.3.2.27.9.7.orig/sunrpc/svc_simple.c	2002-08-06 07:10:30.000000000 +0200
++++ glibc-2.3.2.27.9.7/sunrpc/svc_simple.c	2006-10-25 01:04:18.000000000 +0200
+@@ -61,7 +61,7 @@
+     struct proglst_ *p_nxt;
+   };
+ #ifdef _RPC_THREAD_SAFE_
+-#define proglst ((struct proglst_ *)RPC_THREAD_VARIABLE(svcsimple_proglst_s))
++#define proglst RPC_THREAD_VARIABLE(svcsimple_proglst_s)
+ #else
+ static struct proglst_ *proglst;
+ #endif
+@@ -69,7 +69,7 @@
+ 
+ static void universal (struct svc_req *rqstp, SVCXPRT *transp_s);
+ #ifdef _RPC_THREAD_SAFE_
+-#define transp ((SVCXPRT *)RPC_THREAD_VARIABLE(svcsimple_transp_s))
++#define transp RPC_THREAD_VARIABLE(svcsimple_transp_s)
+ #else
+ static SVCXPRT *transp;
+ #endif
+diff -ru glibc-2.3.2.27.9.7.orig/sysdeps/generic/strtoll.c glibc-2.3.2.27.9.7/sysdeps/generic/strtoll.c
+--- glibc-2.3.2.27.9.7.orig/sysdeps/generic/strtoll.c	2001-07-06 06:55:50.000000000 +0200
++++ glibc-2.3.2.27.9.7/sysdeps/generic/strtoll.c	2006-10-25 00:08:04.000000000 +0200
+@@ -30,5 +30,7 @@
+ #  endif
+ 
+ # endif
++#ifndef USE_IN_EXTENDED_LOCALE_MODEL
+ weak_alias (strtoll, strtoq)
+ #endif
++#endif
+diff -ru glibc-2.3.2.27.9.7.orig/sysdeps/generic/strtoull.c glibc-2.3.2.27.9.7/sysdeps/generic/strtoull.c
+--- glibc-2.3.2.27.9.7.orig/sysdeps/generic/strtoull.c	2001-07-06 06:55:50.000000000 +0200
++++ glibc-2.3.2.27.9.7/sysdeps/generic/strtoull.c	2006-10-25 00:09:19.000000000 +0200
+@@ -30,5 +30,7 @@
+ #  endif
+ 
+ # endif
++#ifndef USE_IN_EXTENDED_LOCALE_MODEL
+ weak_alias (strtoull, strtouq)
+ #endif
++#endif
+diff -ru glibc-2.3.2.27.9.7.orig/sysdeps/generic/wcstoll.c glibc-2.3.2.27.9.7/sysdeps/generic/wcstoll.c
+--- glibc-2.3.2.27.9.7.orig/sysdeps/generic/wcstoll.c	2001-07-06 06:55:50.000000000 +0200
++++ glibc-2.3.2.27.9.7/sysdeps/generic/wcstoll.c	2006-10-25 00:22:39.000000000 +0200
+@@ -21,5 +21,6 @@
+ #define	QUAD	1
+ 
+ #include "wcstol.c"
+-
++#ifndef USE_IN_EXTENDED_LOCALE_MODEL
+ weak_alias (wcstoll, wcstoq)
++#endif
+diff -ru glibc-2.3.2.27.9.7.orig/sysdeps/generic/wcstoull.c glibc-2.3.2.27.9.7/sysdeps/generic/wcstoull.c
+--- glibc-2.3.2.27.9.7.orig/sysdeps/generic/wcstoull.c	2001-07-06 06:55:50.000000000 +0200
++++ glibc-2.3.2.27.9.7/sysdeps/generic/wcstoull.c	2006-10-25 00:22:55.000000000 +0200
+@@ -21,5 +21,6 @@
+ #define	QUAD	1
+ 
+ #include "wcstoul.c"
+-
++#ifndef USE_IN_EXTENDED_LOCALE_MODEL
+ weak_alias (wcstoull, wcstouq)
++#endif
+diff -ru glibc-2.3.2.27.9.7.orig/sysdeps/i386/dl-machine.h glibc-2.3.2.27.9.7/sysdeps/i386/dl-machine.h
+--- glibc-2.3.2.27.9.7.orig/sysdeps/i386/dl-machine.h	2003-01-12 09:50:09.000000000 +0100
++++ glibc-2.3.2.27.9.7/sysdeps/i386/dl-machine.h	2006-10-25 02:11:53.000000000 +0200
+@@ -154,9 +154,9 @@
+    destroys the passed register information.  */
+ /* GKM FIXME: Fix trampoline to pass bounds so we can do
+    without the `__unbounded' qualifier.  */
+-static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
++ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
+      __attribute__ ((regparm (2), unused));
+-static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
++ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
+ 				 ElfW(Addr) retaddr)
+      __attribute__ ((regparm (3), unused));
+ # endif
+@@ -360,7 +360,8 @@
+ /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
+    MAP is the object containing the reloc.  */
+ 
+-static inline void
++auto inline void
++__attribute ((always_inline))
+ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
+ 		 const Elf32_Sym *sym, const struct r_found_version *version,
+ 		 Elf32_Addr *const reloc_addr)
+@@ -503,7 +504,8 @@
+ }
+ 
+ #ifndef RTLD_BOOTSTRAP
+-static inline void
++auto inline void
++__attribute__ ((always_inline))
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ 		  const Elf32_Sym *sym, const struct r_found_version *version,
+ 		  Elf32_Addr *const reloc_addr)
+@@ -604,7 +606,8 @@
+ }
+ #endif	/* !RTLD_BOOTSTRAP */
+ 
+-static inline void
++auto inline void
++__attribute ((always_inline))
+ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
+ 			  Elf32_Addr *const reloc_addr)
+ {
+@@ -613,7 +616,8 @@
+ }
+ 
+ #ifndef RTLD_BOOTSTRAP
+-static inline void
++auto inline void
++__attribute__ ((always_inline))
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+ 			   Elf32_Addr *const reloc_addr)
+ {
+@@ -621,7 +625,8 @@
+ }
+ #endif	/* !RTLD_BOOTSTRAP */
+ 
+-static inline void
++auto inline void
++__attribute__ ((always_inline))
+ elf_machine_lazy_rel (struct link_map *map,
+ 		      Elf32_Addr l_addr, const Elf32_Rel *reloc)
+ {
+@@ -642,7 +647,8 @@
+ 
+ #ifndef RTLD_BOOTSTRAP
+ 
+-static inline void
++auto inline void
++__attribute__ ((always_inline))
+ elf_machine_lazy_rela (struct link_map *map,
+ 		       Elf32_Addr l_addr, const Elf32_Rela *reloc)
+ {

=== added file 'externals/bundles/glibc/2.3.2.27.9.7/gcc-4.0-fixes.patch'
--- externals/bundles/glibc/2.3.2.27.9.7/gcc-4.0-fixes.patch	1970-01-01 00:00:00 +0000
+++ externals/bundles/glibc/2.3.2.27.9.7/gcc-4.0-fixes.patch	2006-10-25 22:42:38 +0000
@@ -0,0 +1,36 @@
+diff -ruN glibc-2.3.2.27.9.7/configure.in glibc-2.3.2.27.9.7.patched/configure.in
+--- glibc-2.3.2.27.9.7/configure.in	2003-04-01 08:53:27.000000000 +0200
++++ glibc-2.3.2.27.9.7.patched/configure.in	2006-10-24 17:25:07.000000000 +0200
+@@ -700,7 +700,7 @@
+ # These programs are version sensitive.
+ AC_CHECK_TOOL_PREFIX
+ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
+-  [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
++  [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]* | 4.*],
+   critic_missing="$critic_missing gcc")
+ AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
+   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
+diff -ru glibc-2.3.2.27.9.7.orig/csu/Makefile glibc-2.3.2.27.9.7/csu/Makefile
+--- glibc-2.3.2.27.9.7.orig/csu/Makefile	2003-03-23 00:00:17.000000000 +0100
++++ glibc-2.3.2.27.9.7/csu/Makefile	2006-10-25 02:31:24.000000000 +0200
+@@ -101,7 +101,7 @@
+ $(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
+ 	$(compile.S) -g0 $(ASFLAGS-.os) -o $@
+ 
+-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
++CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions -fno-unit-at-a-time
+ 
+ vpath initfini.c $(full_config_sysdirs)
+
+diff -ru glibc-2.3.2.27.9.7.orig/linuxthreads/sysdeps/i386/Makefile glibc-2.3.2.27.9.7/linuxthreads/sysdeps/i386/Makefile
+--- glibc-2.3.2.27.9.7.orig/linuxthreads/sysdeps/i386/Makefile	2002-12-28 23:06:49.000000000 +0100
++++ glibc-2.3.2.27.9.7/linuxthreads/sysdeps/i386/Makefile	2006-10-25 02:28:44.000000000 +0200
+@@ -1,7 +1,7 @@
+ ifeq ($(subdir),linuxthreads)
+ # On i686 we must avoid generating the trampoline functions generated
+ # to get the GOT pointer.
+-CFLAGS-pt-initfini.s += -march=i386 -mcpu=i386
++CFLAGS-pt-initfini.s += -march=i386 -mcpu=i386 -fno-unit-at-a-time
+ 
+ # Most files must not be compiled without frame pointer since we need
+ # the frame base address which is stored in %ebp unless the frame pointer

=== added file 'externals/bundles/pvm/3.4.2/gcc-4.0.patch'
--- externals/bundles/pvm/3.4.2/gcc-4.0.patch	1970-01-01 00:00:00 +0000
+++ externals/bundles/pvm/3.4.2/gcc-4.0.patch	2006-10-18 13:54:09 +0000
@@ -0,0 +1,63 @@
+diff -ruN pvm-3.4.2/include/pvm_global.h pvm-3.4.2.patched/include/pvm_global.h
+--- pvm-3.4.2/include/pvm_global.h	2003-09-24 18:40:35.000000000 +0200
++++ pvm-3.4.2.patched/include/pvm_global.h	2006-10-18 15:50:25.000000000 +0200
+@@ -306,10 +306,4 @@
+ extern	struct pvmmclass *pvmmboxclasses;		/* the mbox database */
+ 
+ 
+-/* General Trace Globals Declarations */
+-
+-extern	struct Pvmtevdid pvmtevdidlist[];
+-
+-extern	struct Pvmtevinfo pvmtevinfo[];
+-
+ #define OVERLOADHOST
+diff -ruN pvm-3.4.2/src/global.h pvm-3.4.2.patched/src/global.h
+--- pvm-3.4.2/src/global.h	2003-09-24 18:40:35.000000000 +0200
++++ pvm-3.4.2.patched/src/global.h	2006-10-18 15:50:25.000000000 +0200
+@@ -306,10 +306,4 @@
+ extern	struct pvmmclass *pvmmboxclasses;		/* the mbox database */
+ 
+ 
+-/* General Trace Globals Declarations */
+-
+-extern	struct Pvmtevdid pvmtevdidlist[];
+-
+-extern	struct Pvmtevinfo pvmtevinfo[];
+-
+ #define OVERLOADHOST
+diff -ruN pvm-3.4.2/src/pmsg.c pvm-3.4.2.patched/src/pmsg.c
+--- pvm-3.4.2/src/pmsg.c	1999-07-08 21:00:05.000000000 +0200
++++ pvm-3.4.2.patched/src/pmsg.c	2006-10-18 15:51:20.000000000 +0200
+@@ -151,6 +151,7 @@
+  **           **
+  ***************/
+ 
++extern struct Pvmtevinfo pvmtevinfo[];
+ 
+ /***************
+  **  Private  **
+diff -ruN pvm-3.4.2/src/pvmdtev.c pvm-3.4.2.patched/src/pvmdtev.c
+--- pvm-3.4.2/src/pvmdtev.c	1998-11-20 21:06:41.000000000 +0100
++++ pvm-3.4.2.patched/src/pvmdtev.c	2006-10-18 15:51:54.000000000 +0200
+@@ -73,6 +73,8 @@
+ static int init_start = 0;
+ static int init_end = 0;
+ 
++extern struct Pvmtevdid pvmtevdidlist[];
++extern struct Pvmtevinfo pvmtevinfo[];
+ 
+ void
+ tev_init_pvmd( dst, ctx, tag )
+diff -ruN pvm-3.4.2/src/tev.c pvm-3.4.2.patched/src/tev.c
+--- pvm-3.4.2/src/tev.c	1998-11-20 21:04:18.000000000 +0100
++++ pvm-3.4.2.patched/src/tev.c	2006-10-18 15:52:18.000000000 +0200
+@@ -72,7 +72,7 @@
+  ***************/
+ 
+ struct pmsg *midtobuf();
+-
++extern struct Pvmtevinfo pvmtevinfo[];
+ 
+ /***************
+  **  Private  **

=== modified file 'config/LINUX.cf'
--- config/LINUX.cf	2006-10-17 15:28:36 +0000
+++ config/LINUX.cf	2006-10-18 22:23:11 +0000
@@ -115,3 +115,7 @@
 #include ArchIncludeFile
 #endif
 
+#ifdef OSVersionIncludeFile
+#include OSVersionIncludeFile
+#endif
+

=== modified file 'config/LINUX_I386.cf'
--- config/LINUX_I386.cf	2006-10-17 15:28:36 +0000
+++ config/LINUX_I386.cf	2006-10-18 16:35:22 +0000
@@ -1,9 +1,13 @@
 /* Things specific to I386_LINUX machines (all versions) */
 
-#ifdef IS_C_COMP_MAJOR_GCC_3
-#define ArchOptimizeFlag -mcpu=i486
+#ifdef IS_C_COMP_MAJOR_GCC_4
+# define ArchOptimizeFlag -march=i486
 #else
-#define ArchOptimizeFlag -m486
+# ifdef IS_C_COMP_MAJOR_GCC_3
+#  define ArchOptimizeFlag -mcpu=i486
+# else
+#  define ArchOptimizeFlag -m486
+# endif
 #endif
 
 #ifdef IS_GLIBC23

=== modified file 'config/Platform.select'
--- config/Platform.select	2006-10-17 15:28:36 +0000
+++ config/Platform.select	2006-10-18 16:09:12 +0000
@@ -50,6 +50,9 @@
 
 #elif defined( IS_LINUX )
 #  define PlatformIncludeFile <LINUX.cf>
+#  if defined( IS_LINUX_DEBIAN )
+#    define OSVersionIncludeFile <LINUX_DEBIAN.cf>
+#  endif
 #  if defined( IS_I386 ) 
 #    define ArchIncludeFile <LINUX_I386.cf>
 #  elif defined( IS_ALPHA )

=== modified file 'config/config.sh.in'
--- config/config.sh.in	2006-10-17 15:28:36 +0000
+++ config/config.sh.in	2006-10-25 23:36:00 +0000
@@ -42,3 +42,8 @@
 
 WANT_EXT_LINUXLIBCHEADERS=@want_ext_linuxlibcheaders@
 EXT_LINUXLIBCHEADERS_VERSION=@ext_linuxlibcheaders_version@
+
+C_COMP_KIND=@CompilerKind@
+C_COMP_MAJOR=@CompilerMajor@
+C_COMP_MINOR=@CompilerMinor@
+C_COMP_PATCH=@CompilerPatch@
\ No newline at end of file

=== modified file 'config/configure.cf.in'
--- config/configure.cf.in	2006-10-17 15:28:36 +0000
+++ config/configure.cf.in	2006-10-18 16:24:42 +0000
@@ -42,7 +42,7 @@
 CCOMPILER_ID = $(C_COMP_KIND) $(C_COMP_MAJOR) $(C_COMP_MINOR) $(C_COMP_PATCH)
 /* compiler related libraries and .o files we need */
 LIB_STDCPP = @lib_std_cpp@
-#if IS_C_COMP_KIND_GCC && IS_C_COMP_MAJOR_GCC_3
+#if IS_C_COMP_KIND_GCC && ( IS_C_COMP_MAJOR_GCC_3 || IS_C_COMP_MAJOR_GCC_4 )
 LIB_GCC_EH = @lib_gcc_eh@
 #endif
 GCC_LIBC = @gcc_libc@

=== modified file 'externals/bundles/blahp/1.7.0/build_blahp-1.7.0'
--- externals/bundles/blahp/1.7.0/build_blahp-1.7.0	2006-10-17 15:28:36 +0000
+++ externals/bundles/blahp/1.7.0/build_blahp-1.7.0	2006-10-19 22:12:14 +0000
@@ -47,8 +47,12 @@
 # Environment values.
 patch -i version.patch -p0
 
+patch -i batch_gahp_daemon-classad.patch -p0
+
 cd org.glite.ce.blahp
 
+./bootstrap
+
 echo running configure
 ./configure --with-classads-prefix=$EXTERNALS_INSTALL_DIR/$EXT_CLASSADS_VERSION --with-globus-prefix=$EXTERNALS_INSTALL_DIR/$EXT_GLOBUS_VERSION --with-globus-nothr-flavor=$GLOBUS_FLAVOR --prefix=$PACKAGE_INSTALL_DIR/dynamic
 # The configure won't find classads or globus, but the make will rebuild and

=== modified file 'externals/bundles/classads/0.9.8-b3/build_classads-0.9.8-b3'
--- externals/bundles/classads/0.9.8-b3/build_classads-0.9.8-b3	2006-10-17 15:28:36 +0000
+++ externals/bundles/classads/0.9.8-b3/build_classads-0.9.8-b3	2006-10-19 21:16:46 +0000
@@ -4,6 +4,8 @@
 # It is unlikely that anyone will want to use it. 
 # This script is renamed to something like build_classads-0.9.7
 
+patch -i g++4.0.patch -p0
+
 cd $PACKAGE_BUILD_DIR/$PACKAGE_NAME/
 
 ##### Configure and Build ClassAds #####

=== modified file 'externals/bundles/glibc/2.3.2.27.9.7/build_glibc-2.3.2.27.9.7'
--- externals/bundles/glibc/2.3.2.27.9.7/build_glibc-2.3.2.27.9.7	2006-10-17 15:28:36 +0000
+++ externals/bundles/glibc/2.3.2.27.9.7/build_glibc-2.3.2.27.9.7	2006-10-25 23:44:42 +0000
@@ -6,13 +6,39 @@
 . $EXTERNALS_CONFIG
 
 cd $PACKAGE_BUILD_DIR/$PACKAGE_NAME
-cat $PACKAGE_BUILD_DIR/*.patch | patch -p1
+
+cat $PACKAGE_BUILD_DIR/x86_64-syscall.S.patch | patch -p1
 if [ $? -ne 0 ]
 then
         echo "patch failed"
         exit 1
 fi
 
+if [ "x$C_COMP_KIND" == "xGCC" ]
+    then
+    if [ "x$C_COMP_MAJOR" == "x4" ] ||  ( [ "x$C_COMP_MAJOR" == "x3"] && ( [ "x$C_COMP_MINOR" == "x3" ] || [ "x$C_COMP_MINOR" == "x4" ] ) )
+	then
+	cat $PACKAGE_BUILD_DIR/gcc-3.4-fixes.patch | patch -p1
+	if [ $? -ne 0 ]
+	    then
+	    echo "patch failed"
+	    exit 1
+	fi
+
+	if [ "x$C_COMP_MAJOR" == "x4" ]
+	    then
+	    cat $PACKAGE_BUILD_DIR/gcc-4.0-fixes.patch | patch -p1
+	    if [ $? -ne 0 ]
+		then
+		echo "patch failed"
+		exit 1
+	    fi
+	fi
+    fi
+fi
+
+autoconf
+
 mkdir $PACKAGE_BUILD_DIR/${PACKAGE_NAME}-build
 cd $PACKAGE_BUILD_DIR/${PACKAGE_NAME}-build
 

=== modified file 'src/condor_ckpt/Imakefile'
--- src/condor_ckpt/Imakefile	2006-10-17 15:28:36 +0000
+++ src/condor_ckpt/Imakefile	2006-10-18 16:11:13 +0000
@@ -126,7 +126,7 @@
 /* Figure out what should be in the libc++support library, if anything */
 #if DOES_CHECKPOINTING
 
-#if IS_C_COMP_MAJOR_GCC_3
+#if IS_C_COMP_MAJOR_GCC_3 || IS_C_COMP_MAJOR_GCC_4
 # define NEEDS_CPP_SUPPORT_LIB 0
   CPP_SUPPORT_LIB =
 #else /* non gcc 3.x */

=== modified file 'src/condor_credd/classadUtil.C'
--- src/condor_credd/classadUtil.C	2006-10-17 15:28:36 +0000
+++ src/condor_credd/classadUtil.C	2006-10-18 23:00:09 +0000
@@ -28,13 +28,13 @@
 BEGIN_NAMESPACE( classad )
 
 
-bool getOldClassAd( Stream *sock, classad::ClassAd& ad )
+bool getOldClassAd( Stream *sock, ClassAd& ad )
 {
-	classad::ClassAdParser	parser;
+	ClassAdParser	parser;
 	int 			numExprs;
 	string			buffer;
 	char			*tmp;
-	classad::ClassAd			*upd=NULL;
+	ClassAd			*upd=NULL;
 	static char		*inputLine = new char[ 10240 ];
 
 
@@ -73,7 +73,7 @@
 
 #if 0
 		// put exprs into ad
-	classad::ClassAd *tmpAd = new classad::ClassAd( );
+	ClassAd *tmpAd = new ClassAd( );
 	tmpAd->Update( *upd );
 	tmpAd = tmpAd->AddExplicitTargetRefs( );
 #endif
@@ -86,21 +86,21 @@
 	return true;
 }
 
-bool classad::putOldClassAd ( Stream *sock, classad::ClassAd& ad )
+bool putOldClassAd ( Stream *sock, ClassAd& ad )
 {
-	classad::ClassAdUnParser	unp;
+	ClassAdUnParser	unp;
 	string			buf;
-	classad::ExprTree		*expr;
+	ExprTree		*expr;
 
 	int numExprs=0;
-	classad::ClassAdIterator itor(ad);
+	ClassAdIterator itor;
 	while( !itor.IsAfterLast( ) ) {
-		itor.CurrentAttribute( buf, (const classad::ExprTree *)expr );
+		itor.CurrentAttribute( buf, (const ExprTree *&)expr );
 		if( strcasecmp( "MyType", buf.c_str( ) ) != 0 && 
 				strcasecmp( "TargetType", buf.c_str( ) ) != 0 ) {
 			numExprs++;
 		}
-		itor.NextAttribute( buf, (const classad::ExprTree *) expr );
+		itor.NextAttribute( buf, (const ExprTree *&) expr );
 	}
 	
 	sock->encode( );
@@ -109,8 +109,8 @@
 	}
 		
 	for( itor.ToFirst(); !itor.IsAfterLast(); itor.NextAttribute(buf, (const
-					classad::ExprTree *) expr) ) {
-		itor.CurrentAttribute( buf, (const classad::ExprTree *) expr );
+					ExprTree *&) expr) ) {
+		itor.CurrentAttribute( buf, (const ExprTree *&) expr );
 		if( strcasecmp( "MyType", buf.c_str( ) ) == 0 || 
 				strcasecmp( "TargetType", buf.c_str( ) ) == 0 ) {
 			continue;

=== modified file 'src/condor_credd/classadUtil.h'
--- src/condor_credd/classadUtil.h	2006-10-17 15:28:36 +0000
+++ src/condor_credd/classadUtil.h	2006-10-18 22:48:24 +0000
@@ -35,8 +35,8 @@
 
 BEGIN_NAMESPACE( classad )
 
-bool getOldClassAd( Stream *sock, classad::ClassAd& ad );
-bool putOldClassAd ( Stream *sock, classad::ClassAd& ad );
+bool getOldClassAd( Stream *sock, ClassAd& ad );
+bool putOldClassAd ( Stream *sock, ClassAd& ad );
 
 END_NAMESPACE // classad
 #endif // __CLASSADUTIL_H__

=== modified file 'src/condor_credd/get_cred.C'
--- src/condor_credd/get_cred.C	2006-10-17 15:28:36 +0000
+++ src/condor_credd/get_cred.C	2006-10-18 23:01:15 +0000
@@ -36,7 +36,7 @@
   int cred_size = 0;
 
   DCCredd credd(credd_sin);
-  if (credd.getCredentialData (cred_name, (void*)cred_data, cred_size, errorstack)) {
+  if (credd.getCredentialData ((const char*)cred_name, (void*&)cred_data, cred_size, errorstack)) {
       printf ("Received %d \n%s\n", cred_size, cred_data);
 	  return 0;
   } else {

=== modified file 'src/condor_includes/condor_sys_linux.h'
--- src/condor_includes/condor_sys_linux.h	2006-10-17 15:28:36 +0000
+++ src/condor_includes/condor_sys_linux.h	2006-10-18 20:32:35 +0000
@@ -132,7 +132,7 @@
 #endif
 
 /* swapon and swapoff prototypes */
-#if !defined(IA64) && !defined(CONDOR_PPC)
+#if !defined(IA64) && !defined(CONDOR_PPC) && !defined(LINUX)
 /* there is a bug in this header file for ia64 linux, figure out what I need
 	out of here and prototype it manually. */
 #include <linux/swap.h>

=== modified file 'src/condor_scripts/make_final_tarballs'
--- src/condor_scripts/make_final_tarballs	2006-10-17 15:28:36 +0000
+++ src/condor_scripts/make_final_tarballs	2006-10-25 22:58:35 +0000
@@ -177,6 +177,8 @@
   "sun4x_57"      => "solaris27",
   "sun4x_58"      => "solaris28",
   "sun4x_59"      => "solaris29",
+  "i386_debian"   => "linux",
+  "x86_64_debian" => "linux",
   "i386_rh72"     => "linux",
   "i386_rh80"     => "linux",
   "i386_rh9"      => "linux",
@@ -214,6 +216,8 @@
   "sun4x_57"      => "Sparc",
   "sun4x_58"      => "Sparc",
   "sun4x_59"      => "Sparc",
+  "x86_64_debian" => "x86_64",
+  "i386_debian"   => "x86",
   "i386_rh72"     => "x86",
   "i386_rh80"     => "x86",
   "i386_rh9"      => "x86",
@@ -251,6 +255,8 @@
 # seperate values, or else we get identically named files and that's
 # no good at all!
 %libcname = (
+  "x86_64_debian"  => "debian",
+  "i386_debian"   => "debian",
   "i386_rh72"   => "glibc22",
   "i386_rh80"   => "redhat80",
   "i386_rh9"    => "glibc23",

=== modified file 'src/condor_syscall_lib/Imakefile'
--- src/condor_syscall_lib/Imakefile	2006-10-17 15:28:36 +0000
+++ src/condor_syscall_lib/Imakefile	2006-10-24 07:32:02 +0000
@@ -616,8 +616,8 @@
 
 #endif /* ! IS_CLIPPED && IS_GLIBC */
 
+#if ! IS_CLIPPED && (IS_C_COMP_MAJOR_GCC_3 || IS_C_COMP_MAJOR_GCC_4)
 
-#if ! IS_CLIPPED && IS_C_COMP_MAJOR_GCC_3
 /*
    Starting with gcc3, we are going to ship three internal libraries
    that come with the compiler that we are going to use to replace

=== modified file 'src/condor_syscall_lib/syscall.tmpl'
--- src/condor_syscall_lib/syscall.tmpl	2006-10-17 15:28:36 +0000
+++ src/condor_syscall_lib/syscall.tmpl	2006-10-18 20:28:14 +0000
@@ -872,7 +872,7 @@
 	}
 
 
-#	if defined( LINUX ) && !( defined( LINUX_CENTOS42 ) || defined( LINUX_CENTOS43 ) || defined( LINUX_CENTOS44 ) )
+#	if defined( LINUX ) && !( defined( LINUX_CENTOS42 ) || defined( LINUX_CENTOS43 ) || defined( LINUX_CENTOS44 ) || defined(LINUX_DEBIAN) )
 	/* CENTOS42 uses a header files where this func is const, but
 		the glibc that we use with condor does not define this
 		function as const. So this avoids link errors. */

=== modified file 'src/condor_tests/job_rsc_getdirentries_std.c'
--- src/condor_tests/job_rsc_getdirentries_std.c	2006-10-17 15:28:36 +0000
+++ src/condor_tests/job_rsc_getdirentries_std.c	2006-10-25 09:08:09 +0000
@@ -151,6 +151,27 @@
 		window = (DENT *)voidstar;
 	}
 	close(fd);
+
+	results = unlink("testdir/first");
+	if(results == -1) {
+		perror("unlink testdir/first");
+		return -1;
+	}
+	results = unlink("testdir/second");
+	if(results == -1) {
+		perror("unlink testdir/second");
+		return -1;
+	}
+	results = unlink("testdir/third");
+	if(results == -1) {
+		perror("unlink testdir/third");
+		return -1;
+	}
+	results = rmdir("testdir");
+	if(results == -1) {
+		perror("unlink testdir");
+		return -1;
+	}
 	
 	/* this is not a transitive boolean, because it implies I found
 		_certain_ expected files. */

=== modified file 'src/condor_util_lib/stub_gen_yacc.y'
--- src/condor_util_lib/stub_gen_yacc.y	2006-10-17 15:28:36 +0000
+++ src/condor_util_lib/stub_gen_yacc.y	2006-10-18 19:44:48 +0000
@@ -55,6 +55,7 @@
 	int is_in, int is_out, int is_vararg );
 struct node * mk_action_param_node( char *name, int is_ref, char *mult );
 struct node *insert_node( struct node *list, struct node *new_elem );
+struct node *append_node( struct node *list, struct node *new_elem );
 void display_node( struct node * );
 void output_switch( struct node * );
 void display_list( struct node * );

=== modified file 'src/configure'
--- src/configure	2006-10-17 15:28:36 +0000
+++ src/configure	2006-10-25 22:50:51 +0000
@@ -966,7 +966,7 @@
     else
       echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi
-    cd $ac_popdir
+    cd "$ac_popdir"
   done
 fi
 
@@ -1792,11 +1792,8 @@
     esac
   elif test -f "/etc/debian_version" ; then
     _deb_vers=`cat /etc/debian_version | sed 's/\./_/g'`;
-    _cv_linux_distro="DEBIAN_`echo _deb_vers`"
-    { echo "$as_me:$LINENO: WARNING: Condor is not yet ported to Debian Linux distributions" >&5
-echo "$as_me: WARNING: Condor is not yet ported to Debian Linux distributions" >&2;}
-    { echo "$as_me:$LINENO: WARNING: You may have trouble building and/or packaging Condor" >&5
-echo "$as_me: WARNING: You may have trouble building and/or packaging Condor" >&2;}
+    _cv_opsys_vers="LINUX_DEBIAN"
+    _cv_linux_distro="DEBIAN"
   else
     { echo "$as_me:$LINENO: WARNING: Unrecognised Linux distribution" >&5
 echo "$as_me: WARNING: Unrecognised Linux distribution" >&2;}
@@ -3127,8 +3124,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3186,8 +3182,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3303,8 +3298,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3358,8 +3352,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3404,8 +3397,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3449,8 +3441,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3612,6 +3603,12 @@
     CompilerMinor="3"
     CompilerPatch="4"
     ;;
+ "3.3.5" )
+    CompilerKind="GCC"
+    CompilerMajor="3"
+    CompilerMinor="3"
+    CompilerPatch="5"
+    ;;
  "3.4.2" )
     CompilerKind="GCC"
     CompilerMajor="3"
@@ -3642,6 +3639,18 @@
     CompilerMinor="0"
     CompilerPatch="1"
     ;;
+ "4.0.2" )
+    CompilerKind="GCC"
+    CompilerMajor="4"
+    CompilerMinor="0"
+    CompilerPatch="2"
+    ;;
+ "4.0.3" )
+    CompilerKind="GCC"
+    CompilerMajor="4"
+    CompilerMinor="0"
+    CompilerPatch="3"
+    ;;
  * )
    echo "$as_me:$LINENO: result: ERROR" >&5
 echo "${ECHO_T}ERROR" >&6
@@ -3712,7 +3721,7 @@
  fi
 
 # this gcc3+ specific library is used for standard universe linking
-if test "X$CompilerKind" = "XGCC" && test "X$CompilerMajor" = "X3" ; then
+if test "X$CompilerKind" = "XGCC" && test "X$CompilerMajor" = "X3" -o "X$CompilerMajor" = "X4"; then
   echo "$as_me:$LINENO: checking for libgcc_eh.a" >&5
 echo $ECHO_N "checking for libgcc_eh.a... $ECHO_C" >&6
 if test "${_cv_lib_gcc_eh+set}" = set; then
@@ -3944,8 +3953,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4003,8 +4011,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4075,8 +4082,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4120,8 +4126,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5584,8 +5589,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5651,8 +5655,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5741,8 +5744,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6707,8 +6709,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7029,8 +7030,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7200,8 +7200,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7268,8 +7267,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7418,8 +7416,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7568,8 +7565,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7718,8 +7714,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7868,8 +7863,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8018,8 +8012,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8168,8 +8161,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8318,8 +8310,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8468,8 +8459,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8618,8 +8608,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8768,8 +8757,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8918,8 +8906,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9072,8 +9059,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9137,8 +9123,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9202,8 +9187,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9313,8 +9297,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9411,8 +9394,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9478,8 +9460,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9580,8 +9561,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9647,8 +9627,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9756,8 +9735,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9832,8 +9810,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9888,8 +9865,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9966,8 +9942,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10022,8 +9997,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10103,8 +10077,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10159,8 +10132,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10232,8 +10204,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10282,8 +10253,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10355,8 +10325,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10405,8 +10374,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10487,8 +10455,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10550,8 +10517,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10653,8 +10619,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10719,8 +10684,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10826,8 +10790,7 @@
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11446,7 +11409,7 @@
 
 # For now, we hardcode that non-i386/X86_64 platforms are clipped and don't
 # need an external glibc for anything...
-if test "x$_cv_libc_kind" = "xGLIBC" -a \( "x$_cv_arch" = "xI386" -o "x$_cv_arch" = "xX86_64" \); then
+if test "x$_cv_libc_kind" = "xGLIBC" -a \( "x$_cv_arch" = "xI386" -o "x$_cv_arch" = "xX86_64" \) ; then
 
   _cv_libc_full_vers="$_cv_libc_major.$_cv_libc_minor.$_cv_libc_patch"
   case "$_cv_libc_full_vers" in
@@ -11650,7 +11613,7 @@
 
     ;;
   "2.3.4" )
-  	# I'm using this here to avoid a full port of Condor to the centos 4 OS.
+	# I'm using this here to avoid a full port of Condor to the centos 4 OS.
 	# XXX Also, one must use gcc 3.2.2 instead of as shipped gcc 3.4.4 to
 	# compile this package.
     echo "$as_me:$LINENO: checking glibc" >&5
@@ -11701,6 +11664,55 @@
 
 
     ;;
+  "2.3.6" )
+    echo "$as_me:$LINENO: checking glibc" >&5
+echo $ECHO_N "checking glibc... $ECHO_C" >&6
+ _err_msg="The requested version of glibc (glibc-2.3.2.27.9.7) does not exist in $ac_cv_externals"
+ if test ! -d "$ac_cv_externals/bundles/glibc"; then
+   echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ { echo "$as_me:$LINENO: WARNING: $ac_cv_externals/bundles/glibc is not a directory" >&5
+echo "$as_me: WARNING: $ac_cv_externals/bundles/glibc is not a directory" >&2;}
+ { { echo "$as_me:$LINENO: error: $_err_msg" >&5
+echo "$as_me: error: $_err_msg" >&2;}
+   { (exit 1); exit 1; }; }
+
+ fi
+
+ if test ! -d "$ac_cv_externals/bundles/glibc/2.3.2.27.9.7"; then
+   echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ { echo "$as_me:$LINENO: WARNING: $ac_cv_externals/bundles/glibc/2.3.2.27.9.7 is not a directory" >&5
+echo "$as_me: WARNING: $ac_cv_externals/bundles/glibc/2.3.2.27.9.7 is not a directory" >&2;}
+ { { echo "$as_me:$LINENO: error: $_err_msg" >&5
+echo "$as_me: error: $_err_msg" >&2;}
+   { (exit 1); exit 1; }; }
+
+ fi
+
+ if test ! -f "$ac_cv_externals/bundles/glibc/2.3.2.27.9.7/build_glibc-2.3.2.27.9.7"; then
+   echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ { echo "$as_me:$LINENO: WARNING: $ac_cv_externals/bundles/glibc/2.3.2.27.9.7/build_glibc-2.3.2.27.9.7 does not exist" >&5
+echo "$as_me: WARNING: $ac_cv_externals/bundles/glibc/2.3.2.27.9.7/build_glibc-2.3.2.27.9.7 does not exist" >&2;}
+ { { echo "$as_me:$LINENO: error: $_err_msg" >&5
+echo "$as_me: error: $_err_msg" >&2;}
+   { (exit 1); exit 1; }; }
+
+ fi
+
+ _cv_ext_glibc_version="glibc-2.3.2.27.9.7"
+ echo "$as_me:$LINENO: result: $_cv_ext_glibc_version" >&5
+echo "${ECHO_T}$_cv_ext_glibc_version" >&6
+ ext_glibc_version=$_cv_ext_glibc_version
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_EXT_GLIBC 1
+_ACEOF
+
+
+    ;;
   * )
     echo "$as_me:$LINENO: checking glibc" >&5
 echo $ECHO_N "checking glibc... $ECHO_C" >&6
@@ -13618,11 +13630,6 @@
 
 
 
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
   # Let's still pretend it is `configure' which instantiates (i.e., don't
   # use $as_me), people would be surprised to read:
   #    /* config.h.  Generated by config.status.  */
@@ -13661,6 +13668,12 @@
 	 fi;;
       esac
     done` || { (exit 1); exit 1; }
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
   sed "$ac_vpsub

=== modified file 'src/configure.ac'
--- src/configure.ac	2006-10-17 15:28:36 +0000
+++ src/configure.ac	2006-10-24 15:15:02 +0000
@@ -256,9 +256,8 @@
     esac
   elif test -f "/etc/debian_version" ; then
     _deb_vers=`cat /etc/debian_version | sed 's/\./_/g'`;
-    _cv_linux_distro="DEBIAN_`echo _deb_vers`"
-    AC_MSG_WARN([Condor is not yet ported to Debian Linux distributions])
-    AC_MSG_WARN([You may have trouble building and/or packaging Condor]) 
+    _cv_opsys_vers="LINUX_DEBIAN"
+    _cv_linux_distro="DEBIAN"
   else
     AC_MSG_WARN([Unrecognised Linux distribution])
     AC_MSG_WARN([You may have trouble building and/or packaging Condor]) 
@@ -724,6 +723,12 @@
     CompilerMinor="3"
     CompilerPatch="4"
     ;;
+ "3.3.5" )
+    CompilerKind="GCC"
+    CompilerMajor="3"
+    CompilerMinor="3"
+    CompilerPatch="5"
+    ;;
  "3.4.2" )
     CompilerKind="GCC"
     CompilerMajor="3"
@@ -754,6 +759,18 @@
     CompilerMinor="0"
     CompilerPatch="1"
     ;;
+ "4.0.2" )
+    CompilerKind="GCC"
+    CompilerMajor="4"
+    CompilerMinor="0"
+    CompilerPatch="2"
+    ;;
+ "4.0.3" )
+    CompilerKind="GCC"
+    CompilerMajor="4"
+    CompilerMinor="0"
+    CompilerPatch="3"
+    ;;
  * )
    AC_MSG_RESULT([ERROR])
    AC_MSG_ERROR([Condor will not compile with gcc version $gcc_vers])
@@ -770,7 +787,7 @@
 GET_GCC_VALUE([libgcc.a],[-print-libgcc-file-name],[gcc_libc])
 GET_GCC_VALUE([libstdc++.a],[--print-file-name=libstdc++.a],[lib_std_cpp])
 # this gcc3+ specific library is used for standard universe linking
-if test "X$CompilerKind" = "XGCC" && test "X$CompilerMajor" = "X3" ; then
+if test "X$CompilerKind" = "XGCC" && test "X$CompilerMajor" = "X3" -o "X$CompilerMajor" = "X4"; then
   GET_GCC_VALUE([libgcc_eh.a],[--print-file-name=libgcc_eh.a],[lib_gcc_eh])
 fi
 
@@ -1704,7 +1721,7 @@
 
 # For now, we hardcode that non-i386/X86_64 platforms are clipped and don't
 # need an external glibc for anything...
-if test "x$_cv_libc_kind" = "xGLIBC" -a \( "x$_cv_arch" = "xI386" -o "x$_cv_arch" = "xX86_64" \); then
+if test "x$_cv_libc_kind" = "xGLIBC" -a \( "x$_cv_arch" = "xI386" -o "x$_cv_arch" = "xX86_64" \) ; then
 
   _cv_libc_full_vers="$_cv_libc_major.$_cv_libc_minor.$_cv_libc_patch"
   case "$_cv_libc_full_vers" in
@@ -1724,11 +1741,14 @@
     CONDOR_EXTERNAL_VERSION([glibc],[2.3.2.27.9.7])
     ;;
   "2.3.4" )
-  	# I'm using this here to avoid a full port of Condor to the centos 4 OS.
+	# I'm using this here to avoid a full port of Condor to the centos 4 OS.
 	# XXX Also, one must use gcc 3.2.2 instead of as shipped gcc 3.4.4 to 
 	# compile this package.
     CONDOR_EXTERNAL_VERSION([glibc],[2.3.2.27.9.7])
     ;;
+  "2.3.6" )
+    CONDOR_EXTERNAL_VERSION([glibc],[2.3.2.27.9.7])
+    ;;
   * )  
     AC_MSG_CHECKING(glibc)
     AC_MSG_RESULT([ERROR])

=== modified file 'src/stork/Imakefile'
--- src/stork/Imakefile	2006-10-17 15:28:36 +0000
+++ src/stork/Imakefile	2006-10-19 07:32:37 +0000
@@ -6,7 +6,7 @@
 /* Specify Stork build configuration here. */
 #define WANT_STORK_API			YES
 #define WANT_STORK_GLOBUS		YES
-#define WANT_STORK_SRB			YES
+#define WANT_STORK_SRB			NO
 #define WANT_STORK_UNITREE		YES
 #define WANT_STORK_SRM_CASTOR	YES
 #define WANT_STORK_SRM_DCACHE	YES

=== modified file 'src/stork/dap_client_interface.C'
--- src/stork/dap_client_interface.C	2006-10-17 15:28:36 +0000
+++ src/stork/dap_client_interface.C	2006-10-18 23:02:29 +0000
@@ -242,7 +242,7 @@
 	}
 	free (_request);
 
-	sock->code ((int)cred_size);
+	sock->code ((int*)&cred_size);
 	if (cred_size) {
 		char * _cred = strdup (cred);  
 		sock->code_bytes (_cred, cred_size);